【python基础】基本数据类型

news2024/9/22 10:06:55

文章目录

  • 一. Python基本数据类型
    • 1. 整数
      • 1.1. python的四种进制
      • 1.2. 数中的下划线
    • 2. 浮点数
    • 3. 复数
    • 4. 布尔型
    • 5. 运算符
      • 5.1. 算术运算符
      • 5.2. 比较运算符
      • 5.3. 逻辑运算符
      • 5.4 运算符优先级
    • 6. 常量
  • 二. 注释
  • 三. Python之禅

一. Python基本数据类型

1. 整数

  • 无长度限制:Python 3中整型数据的长度不受机器字长的影响,它的取值范围只与计算机的内存有关。也就是说,只要计算机的内存足够大,无论整型的长度为多少,都不用担心溢出问题。
  • 4种进制来表示整型,默认的是十进制,如果想要用其他进制表示,需要加上引导符号

1.1. python的四种进制

二进制:以0B或0b开头;
八进制:以 0O或0o开头;
十六进制:以0X或0x开头
# 1. 转为10进制
>>> a=0b101
>>> print('a的十进制表示:%d'%a)
a的十进制表示:5

# 2. 不同进制之间的转换
bin(x):将数值x转换为二进制。 
oct(x):将数值x转换为八进制。 
hex(x):将数值x转换为十六进制。 
int(x):将字符串x转换为整数。


>>> a=0b101
>>> print(bin(5))
0b101
>>> print(oct(5))
0o5
>>> print(hex(5))
0x5
# 转换为10进制
>>> print(int(a))
5

 

# 对整数执行加(+)减(-)乘(*)除(/)运算。
>>> 2 + 3
5
>>> 3 - 2
1
>>> 2 * 3
6
>>> 3 / 2
1.5

# 两个乘号表示乘方运算:
>>> 3 ** 2
9
>>> 10 ** 6
1000000

 

1.2. 数中的下划线

书写很大的数时,可使用下划线将其中的数字分组,使其更清晰易读:

>>> universe_age = 14_000_000_000
>>> print(universe_age)
14000000000

在Python看来,1000与1_000没什么不同,1_000与10_00也没什么不同。这种表示法适用于整数和浮点数,但只有Python 3.6和更高的版本支持

 

2. 浮点数

  • Python的浮点数一般以十进制表示,由整数和小数部分组成,如 0.0,2.34,3.14159都是浮点数。
  • 对于非常大或者非常小的浮点数可以用科学记数法表示。如: 0.00000051可以表示成5.1E-7,314000可以表示成3.14E5
  • Python中的浮点数是双精度的,每个浮点数占8个字节(64位)52 位存储尾数11位存储阶码1位存储符号,故浮点数的取值范围为-1.8E308~1.8E308。超出这个范围将视为无穷大(inf)或者无穷小 (-inf)
  • Python中最长可以输出浮点数的17位数字,但是计算机只能保证15位数字的精度,对于超出17位的浮点数会产生截断。一旦产生截断,结果就会产生误差。如平时我们都会认为0.1+0.2的结果是0.3,但是实际执行的结果却是0.30000000000000004。

注意小数计算的结果包含的小数位数可能是不确定的

>>> 0.2 + 0.1
0.30000000000000004
>>> 3 * 0.1
0.30000000000000004

 

无论是哪种运算,只要有操作数是浮点数,Python默认得到的总是浮点数,即便结果原本为整数也是如此。

>>> 4/2
2.0
>>> 1 + 2.0
3.0
>>> 2 * 3.0
6.0
>>> 3.0 ** 2
9.0

 

3. 复数

格式为2+3j和5.6+7.8j这样的数据称为复数。一个复数由“实部”和 “虚部”两部分组成,实部是一个实数,虚部是一个实数后加j或J组成, 虚部不能单独存在

# 转换为复数
>>> a=complex(2,4)
>>> print(a)
(2+4j)
# 打印实部和虚部
>>> print('实部:',a.real,'虚部:',a.imag)
实部: 2.0 虚部: 4.0
# 转换为复数
>>> print(complex(6))
(6+0j)

 

4. 布尔型

布尔型只有True和False两个值,本质上来说,布尔型其实是一种特殊的整数,True对应1,False对应0。
任何对象都具有布尔属性,在Python中,以下数据的值均为False:

  1. None
  2. False
  3. 任何为0的数字类型:0、0.0、0j。
  4. 任何空字符、空列表、空字典:“”、()、[ ]、{}。
  5. 用户定义的类实例,如果类中定义了_bool_()或者 _len_()方法,并且方法返回0,或者布尔值False。

以下代码结果均为False:

>>> bool()
False
>>> bool('')
False
>>> bool(0)
False
>>> bool([ ])

 

5. 运算符

运算符是告诉编译程序执行指定运算操作的符号,是针对操作数进行运算。 如表达式1+0.01中,1和0.01均为操作数,+是运算符

数值运算符是一类对数值型操作数有效的运算符。按照不同的功能, 又可以分成算术运算符、赋值运算符、比较运算符、逻辑运算符等。

5.1. 算术运算符

一元操作符。以x=2,y=9为例,对以下算术运算符进行说明, 一元运算符如表
在这里插入图片描述

二元运算符如表
在这里插入图片描述

 

不同类型的数值运算
Python中的算术运算符也支持对不同类型的数值进行混合运算。在混合运算时,Python会强制将数值进行 临时类型转换。遵循原则是将简单的数据类型转换为相对复杂的那一种数据类型。

  • 布尔类型进行算术运算时,会将值视为0或1。
  • 整型与浮点型进行混合运算时,会将整型转换为浮点型
  • 其他类型与复数运算时,会将其他类型转换为复数
1+True #结果为2 
1*2.0 #结果为2.0 
1+(2+3j) #结果为(3+3j)

 

例题:时间转换

给定一个以秒为单位的时间t,要求用“ H : M : S ”的 格式来表示这个时间。 H 表示小时, M 表示分钟, S 表示秒,它们都是整数且没有前导的“0”。例如,若t=0,则应输出“0:0: 0”;若t=3661,则输出“1:1:1”。

t=eval(input())
H=t//3600 # 整数除得小时
t=t%3600  # 余数:去除小时的秒
M=t//60   # 整数除:秒中有多少分钟
S=t%60    # 余数:去除分钟后的秒,  
print("{}:{}:{}".format(H,M,S))

 

5.2. 比较运算符

比较运算符是比较符号左右两边的操作数,运算结果是一个布尔值。以x=2,y=9为例,对以下比较运算符进行说明。

在这里插入图片描述

猜数游戏

程序中给出一个固定的数字,用户通过键盘输入一个数,如果这个数 与程序给出的数字相同,则输出“恭喜你猜对了!”,如果这个数比程序 给出的数字大则输出“太大了!”,如果这个数比程序给出的数字小,则输出“太小了!”。

y=50
x=eval(input('请输入你猜的数字:'))
if x==y:
    print('恭喜你猜对了')
elif x>y:
    print('太大了')
else:
    print('太小了')

 

5.3. 逻辑运算符

逻辑运算符可以把多个条件表达式连接起来,形成更为复杂的条件
在这里插入图片描述

剪刀石头布游戏

小明和小红想玩“剪刀,石头,布”游戏。在这个游戏中,两个人同 时说“剪刀”“石头”或“布”,压过另一方的为胜者。规则是:“布” 胜过“石头”,“石头”胜过“剪刀”,“剪刀”胜过“布”。

# 输入:
# 两个数分别代表小明和小红的选择,范围为{0,1,2},用逗号隔开。0表示石头,1表示布,2表示剪刀。
# 这两个数分别表示两个人所选的。如:0和2,则表小明出石头,小红出剪刀。


# 输出:
# 如果前者赢,输出“小明胜”。如果后者赢,输出“小红胜”。如果 是平局,输出“平局”。

a, b = eval(input())
if (a == 0 and b == 1) or (a == 1 and b == 2) or (a == 2 and b == 0): print('小红胜')
if (a == 1 and b == 0) or (a == 2 and b == 1) or (a == 0 and b == 2): print('小明胜')
if a == b:
    print('平局')

 

5.4 运算符优先级

常见运算符优先级由高到低的顺序如下:

  • 乘方:∗∗
  • 按位取反:~
  • 正负号:+x;-x
  • 乘、除、求余:∗、/、%
  • 加、减:+、-;
  • 比较:<、 <=、>、>=、!=、==
  • 成员判断:not in、in;
  • 逻辑运算:not、and、 or

 

同一优先级下的:

  • 运算符在运算时是按照从左往右的顺序执行,如2+3-4的运算顺序是:解释器先运算2+3,得到结果5再与运算符结合执行5-4。
  • 赋值运算符的结合则相反,按照从右往左的顺序,如x=y=z,会先 将z的值赋给y,再将y的值赋给x。

 

6. 常量

常量类似于变量,但其值在程序的整个生命周期内保持不变。
Python没有内置的常量类型,但Python程序员会使用全大写来指出应将某个变量视为常量,其值应始终不变:

MAX_CONNECTIONS = 5000

 

二. 注释

在Python中,注释用井号(#)标识。井号后面的内容都会被Python解释器忽略,

# 向大家问好。
print("Hello Python people!")

 

三. Python之禅

Simple is better than complex.

如果有两个解决方案,一个简单、一个复杂,但都行之有效,就选择简单的解决方案吧。这样,你编写的代码将更容易维护,你或他人以后改进这些代码时也会更容易。

Now is better than never.

你可以用余生来学习Python和编程的纷繁难懂之处,但这样你什么项目都完不成。不要企图编写完美无缺的代码,而是要先编写行之有效的代码,再决定是对其做进一步改进,还是转而去编写新代码。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1934512.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java面试八股之什么是Redis的缓存更新

什么是Redis的缓存更新 Redis的缓存更新是指当缓存中的数据发生变化时&#xff0c;需要将这些变化同步到缓存中以保持数据的一致性。缓存更新的目的是确保缓存中的数据始终是最新的&#xff0c;以便用户可以获取到最新的数据。 常见的缓存更新策略包括&#xff1a; 直接覆盖…

OpenCv 如何在 Java 中使用

Java 项目引入 OpenCv 环境准备OpenCv介绍下载Maven 安装动态链接库 完成 环境准备 JDK 8 OpenCv 4.0.0 Maven 3.9 Windows 11 OpenCv 介绍 OpenCV&#xff08;开源计算机视觉库&#xff09;是一个功能强大的计算机视觉和机器学习库。它提供了广泛的工具和算法&#xff0c;用…

Kafka Producer之幂等性

文章目录 1. 启用幂等性2. 底层变化3. 数据不重复4. 数据有序 幂等性通过消耗时间和性能的方式&#xff0c;解决乱序和重复问题。 但是只能保证同一生产者在一个分区中的幂等性。 1. 启用幂等性 //创建producerHashMap<String, Object> config new HashMap<>();…

js vue axios post 数组请求参数获取转换, 后端go参数解析(gin框架)全流程示例

今天介绍的是前后端分离系统中的请求参数 数组参数的生成&#xff0c;api请求发送&#xff0c;到后端请求参数接收的全过程示例。 为何会有这个文章&#xff1a;后端同一个API接口同时处理单条或者多条数据&#xff0c;这样就要求我们在前端发送请求参数的时候需要统一将请…

精准营销从数据开始,Xinstall为App增长插上翅膀,安装数据尽在掌握!

在这个信息爆炸的时代&#xff0c;App市场竞争日益激烈&#xff0c;如何精准获取并分析安装数据&#xff0c;成为了每一个App开发者和运营者必须面对的重要课题。数据&#xff0c;是指导我们行动的灯塔&#xff0c;是优化策略、提升转化的关键。然而&#xff0c;对于许多开发者…

ElmoCha——体验最好的 web 内容 AI 总结插件

介绍 最近我用了很多网页总结产品&#xff0c;share 一下我认为最好用的 web 总结的 AI 插件。 当前体验最好的 web 内容总结插件&#xff1a;ElmoChat&#xff0c;由 Lepton 开发&#xff0c;可以生成网页总结、摘要、观点、相关问题。 非常方便的是&#xff0c;总结的内容提…

【学习笔记】无人机系统(UAS)的连接、识别和跟踪(二)-定义和缩写

引言 3GPP TS 23.256 技术规范&#xff0c;主要定义了3GPP系统对无人机&#xff08;UAV&#xff09;的连接性、身份识别、跟踪及A2X&#xff08;Aircraft-to-Everything&#xff09;服务的支持。 3GPP TS 23.256 技术规范&#xff1a; 【免费】3GPPTS23.256技术报告-无人机系…

【JVM基础03】——组成-详细介绍下Java中的堆

目录 1- 引言&#xff1a;堆1-1 堆是什么&#xff1f;(What)1-2 为什么用堆&#xff1f;堆的作用 (Why) 2- ⭐核心&#xff1a;堆的原理&#xff08;How&#xff09;2-1 堆的划分2-2 Java 7 与 Java 8 的堆区别 3- 小结&#xff1a;3-1 详细介绍下Java的堆&#xff1f;3-2 JVM …

【转盘案例-弹框-修改Bug-完成 Objective-C语言】

一、我们来看示例程序啊 1.旋转完了以后,它会弹一个框,这个框,是啥, Alert 啊,AlertView 也行, AlertView,跟大家说过,是吧,演示过的啊,然后,我们就用iOS9来做了啊,完成了以后,我们要去弹一个框, // 弹框 UIAlertController *alertController = [UIAlertContr…

CI/CD的node.js编译报错npm ERR! network request to https://registry.npmjs.org/

1、背景&#xff1a; 在维护paas云平台过程中&#xff0c;有研发反馈paas云平台上的CI/CD的前端流水线执行异常。 2、问题描述&#xff1a; 流水线执行的是前端编译&#xff0c;使用的是node.js环境。报错内容如下&#xff1a; 2024-07-18T01:23:04.203585287Z npm ERR! code E…

源码分析SpringCloud Gateway如何加载断言(predicates)与过滤器(filters)

我们今天的主角是Gateway网关&#xff0c;一听名字就知道它基本的任务就是去分发路由。根据不同的指定名称去请求各个服务&#xff0c;下面是Gateway官方的解释&#xff1a; Spring Cloud Gateway&#xff0c;其他的博主就不多说了&#xff0c;大家多去官网看看&#xff0c;只…

HarmonyOS NEXT零基础入门到实战-第一部分

构建节页面思路&#xff1a; 1、排版 (分析布局) 2、内容&#xff08;基础组件&#xff09; 3、美化&#xff08;属性方法&#xff09; 设计资源-svg图标 界面中展示图标 ->可以使用svg图标&#xff08;任意放大缩小不失真&#xff0c;可以改颜色&#xff09; 使用方式&a…

Re-labeling ImageNet(CVPR 2021, Naver)

paper&#xff1a;Re-labeling ImageNet: from Single to Multi-Labels, from Global to Localized Labels official implementation&#xff1a;GitHub - naver-ai/relabel_imagenet 背景 ImageNet 数据集是现代计算机视觉领域的重要基准&#xff0c;广泛用于图像分类模型的…

低代码中间件学习体验分享:业务系统的创新引擎

前言 星云低代码平台介绍 星云低代码中间件主要面向企业IT部门、软件实施部门的低代码开发平台&#xff0c;无需学习开发语言/技术框架&#xff0c;可视化开发PC网页/PC项目/小程序/安卓/IOS原生移动应用&#xff0c;低门槛&#xff0c;高效率。针对企业研发部门人员少&#…

从0到1搭建数据中台(4):neo4j初识及安装使用

在数据中台中&#xff0c;neo4j作为图数据库&#xff0c;可以用于数据血缘关系的存储 图数据库的其他用于主要用于知识图谱&#xff0c;人物关系的搭建&#xff0c;描述实体&#xff0c;关系&#xff0c;以及实体属性 安装 在官网 https://neo4j.com/ 下载安装包 neo4j-co…

【jenkins+cmake+svn管理c++项目】msbuild: command not found

一、前言 jenkins中配置cmakeVS的编译构建过程&#xff0c;需要用到MSBuild这个工具来完成VS工作&#xff0c;MSBuild的安装配置方法见&#xff1a;windows编译环境和工具配置 MSBuildCMAKE的编译可以用脚本来完成&#xff0c;我在jenkins的构建步骤中添加了一个ExecuteShell…

Hadoop-36 HBase 3节点云服务器集群 HBase Shell 增删改查 全程多图详细 列族 row key value filter

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; HadoopHDFSMapReduceHiveFlumeSqoopZookeeperHBase 正在 章节内容 上一节我们完成了&#xff1a; 集群的…

解决:Linux上SVN 1.12版本以上无法直接存储明文密码

问题&#xff1a;今天在Linux机器上安装了SVN&#xff0c;作为客户端使用&#xff0c;首次执行SVN相关操作&#xff0c;输入账号密码信息后&#xff0c;后面再执行SVN相关操作&#xff08;比如"svn update"&#xff09;还是每次都需要输入密码。 回想以前在首次输入…

Visual Studio Code 实现远程开发

Background 远程开发是指开发人员在本地计算机上进行编码、调试和测试&#xff0c;但实际的开发环境、代码库或应用程序运行在远程服务器上。远程开发的实现方式多种多样&#xff0c;包括通过SSH连接到远程服务器、使用远程桌面软件、或者利用云开发环境等。这里我们是使用VSCo…

Vue封装文件上传组件(支持图片、PDF、Excel、word预览下载)

一、准备工作 安装预览依赖包&#xff1a;exceljs、mammoth、vue-pdf 二、封装组件 文件上传组件 fileUploadPro.vue。默认预览、下载是true,可通过isPreView、isDownLoad控制 <template><div style"display: flex"><el-uploadmultipleaction&qu…