Python基础语法:基本数据类型(数字类型和布尔类型)
在我们的日常生活中,经常会用到数字,所以数字(numbers)是 pytthon 中的一个基本数据类型。在 python 里面啊,numbers 这种数据类型是一个大类,在 numbers 这个大类下面有整型、浮点型(小数)、复数等子类。
1 整形(int)与浮点型(float)
1.1 整型(int)
整型是Python中一种基本的数据类型,用于表示正整数和负整数。在Python中,整型没有固定的上限或下限,它的大小取决于可用内存和系统的架构。
1.1.1 整型的特点
-
无限制大小:Python的整型可以是任意大的(或者小),只受限于计算机的内存和系统的架构。
-
没有专门的符号:不像其他一些编程语言,Python中的整数不需要使用特殊的符号或前缀来表示正数或负数。
-
支持运算:整型变量可以参与数学运算,如加法、减法、乘法、除法和取模等。
-
类型推断:当你给变量赋值时,Python会根据你赋的值自动推断变量的类型。
1.1.2 创建整型变量
在Python中,创建整型变量非常简单,只需要给变量赋一个整数值即可。
# 创建整型变量
my_integer = 10
print(my_integer, type(my_integer)) # 输出: 10 <class 'int'>
1.1.3 整型运算
整型变量可以进行各种数学运算。
a = 10
b = 5 # 加法
add_result = a + b
print(add_result) # 输出: 15 # 减法
subtract_result = a - b
print(subtract_result) # 输出: 5 # 乘法
multiply_result = a * b
print(multiply_result) # 输出: 50 # 除法
divide_result = a / b
print(divide_result) # 输出: 2.0 # 取模(求余数)
modulus_result = a % b
print(modulus_result) # 输出: 0 # 幂运算(需要使用 ** 运算符)
power_result = a ** b
print(power_result) # 输出: 100000
1.1.4 类型转换
整型可以与其他数据类型进行转换,通常使用内置的int()
函数来将其他数据类型转换为整型。
# 将浮点数转换为整型(会截断小数部分)
float_number = 3.14
int_number = int(float_number)
print(int_number) # 输出: 3 # 将整数字符串转换为整型(字符串必须包含有效的整数值)
str_number = "123"
int_from_str = int(str_number)
print(int_from_str) # 输出: 123
注意:如果尝试将非整数字符串转换为整型会引发ValueError异常。
non_int_str = "abc"
print(int(non_int_str))# 报错:ValueError: invalid literal for int() with base 10: 'abc'
整型在Python编程中非常常见,因为它们可以用来表示计数、索引、大小、年龄等概念。同时,由于Python的动态类型特性,整型变量也可以随时与其他类型进行转换和运算。
1.2 浮点型(float)
浮点型是Python中用于表示实数的数据类型,包括整数部分和小数部分。浮点数的精度是有限的,因此在处理浮点数时可能会遇到精度问题。Python中的浮点数通常以双精度形式存储,这意味着它们可以存储非常大或非常小的数,以及小数点后很多位的数。
在很多其他的语言里面,浮点数(也就是数学里的小数)还有进一步的细分,分单精度和双精度。精度越高能表示的数值就越准确,在其他很多的语言里单精度用 float 来表示,双精度用 double 来表示。双精度表示的精度要比单精要更高一些。
在 python 里面没有单精度和双精度之分,python 浮点数的数据类型只有 float,因为 python 里面的 float 支持的精度就是其他语言里面所谓的双精度。
1.2.1 浮点型的特点
-
近似表示:浮点数在计算机中是以近似值的形式表示的,因此它们可能无法精确表示某些小数。
-
精度限制:虽然Python的浮点数可以表示非常大或非常小的数,但它们的精度是有限的。对于需要高精度计算的场景,可能需要使用专门的库,如
decimal
。 -
运算支持:浮点数支持各种数学运算,如加法、减法、乘法、除法等。
1.2.2 创建浮点型变量
在Python中,创建浮点型变量非常简单,只需要给变量赋一个浮点数值即可。
# 创建浮点型变量
my_float = 3.14
print(my_float, type(my_float)) # 输出: 3.14 <class 'float'>
1.2.3 浮点型运算
浮点型变量同样可以进行各种数学运算。
a = 3.14
b = 2.71 # 加法
add_result = a + b
print(add_result) # 输出: 5.85 # 减法
subtract_result = a - b
print(subtract_result) # 输出: 0.43 # 乘法
multiply_result = a * b
print(multiply_result) # 输出: 8.5054 # 除法
divide_result = a / b
print(divide_result) # 输出: 1.1586676646706588
1.2.4 浮点型的精度问题
由于浮点数的近似表示,进行浮点运算时可能会遇到精度问题。例如,两个看似相等的浮点数可能在比较时并不相等。
x = 0.1 + 0.2
y = 0.3
print(x == y) # 输出: False
在上面的例子中,尽管x
和y
看起来应该相等(都是0.3),但由于浮点数的精度问题,它们并不完全相等。
1.2.5 类型转换
整型可以转换为浮点型,反之亦然。通常使用内置的float()
函数将其他数据类型转换为浮点型,使用int()
函数将浮点型转换为整型(会截断小数部分)。
# 将整型转换为浮点型
int_number = 3
float_number = float(int_number)
print(float_number) # 输出: 3.0 # 将浮点型转换为整型(会截断小数部分)
float_number = 3.14
int_number = int(float_number)
print(int_number) # 输出: 3
浮点型在Python中广泛用于科学计算、数据处理、图形渲染等领域,但需要注意的是,在处理需要高精度计算的场景时,应该特别小心浮点数的精度问题。如果需要高精度计算,可以考虑使用decimal
模块或第三方库。
1.3 Python中的 / 和 //
在Python中,/
和 //
是两种不同的除法运算符,它们各自有特定的用途和行为。
1.3.1 浮点数除法(/
运算符)
当你使用 /
运算符进行除法运算时,Python会返回一个浮点数结果,即使两个操作数都是整数,或者除法的结果是整数(在数学里) 。
# 两个整数相除,结果为浮点数
result = 6 / 3
print(result) # 输出: 2.0 # 浮点数除法
result = 6.0 / 3.0
print(result) # 输出: 2.0
这种除法会保留除法运算的结果的小数部分,即使在数学上它应该是一个整数。例如,6 / 3
的结果不是 2
,而是 2.0
。
1.3.2 整数除法(//
运算符)
当你使用 //
运算符进行除法运算时,Python会返回一个整数结果,这个整数是除法运算结果的商的整数部分(向下取整,即地板除)。
# 两个整数相除,结果为整数
result = 7 // 3
print(result) # 输出: 2 # 浮点数与整数相除,结果仍为整数
result = 7.0 // 3
print(result) # 输出: 2 # 注意,负数相除时,结果仍向负无穷大方向取整
result = -7 // 3
print(result) # 输出: -3
这种除法会丢弃除法运算结果的小数部分,只保留整数部分。因此,7 // 3
的结果是 2
,而不是 2.3333333333333335
。
这两种除法运算符在编程中各有用途。当你需要保留小数部分时,使用 /
运算符;当你只需要整数结果时,使用 //
运算符。特别是在需要避免浮点数精度问题或者进行模运算时(比如 a % b
),使用 //
运算符通常更为合适。
1.4 二进制、八进制、十进制、十六进制
1.4.1 二进制、八进制、十六进制表示符
- 二进制表示符:0b
- 八进制表示符:0o
- 十六进制表示符:0x
1.4.2 二进制、八进制、十进制、十六进制的相互转换
- 使用 bin() 方法,可以把其他进制的数转换为二进制。
- 使用 int() 方法,可以把其他进制的数转换为十进制。
- 使用 oct() 方法,可以把其他进制的数转换为八进制。
- 使用 hex() 方法,可以把其他进制的数转换为十六进制。
print(bin(10)) # 0b1010
print(bin(0o10)) # 0b1000
print(bin(0x10)) # 0b10000print(oct(10)) # 0o12
print(oct(0b10)) # 0o2
print(oct(0x10)) # 0o20print(int(0b10)) # 2
print(int(0o10)) # 8
print(int(0x10)) # 16print(hex(10)) # 0xa
print(hex(0b10)) # 0x2
print(hex(0o10)) # 0x8
1.5 复数(complex)
在Python中,复数(complex)是数学上表示实数和虚数组合的数。复数的形式通常写作 a + bj
,其中 a
是实部,b
是虚部,j
是虚数单位,满足 j^2 = -1
。
Python中的复数可以使用 complex()
函数来创建,该函数接受两个参数:实部和虚部。例如:
c = complex(4, 3) # 创建一个复数,实部为4,虚部为3
你也可以直接在代码中用 j
来表示虚数单位,例如:
c = 4 + 3j # 同样创建了一个复数,实部为4,虚部为3
Python提供了很多内置方法来处理复数,例如:
real
:返回复数的实部。imag
:返回复数的虚部。conjugate()
:返回复数的共轭(实部不变,虚部取反)。real
和imag
属性也可以用于赋值,以改变复数的实部或虚部。
复数在Python中有广泛的应用,特别是在科学计算、信号处理、电子工程等领域,它们经常用于解决涉及周期性、波动、旋转等问题的数学模型。Python的标准库(如cmath
模块)提供了很多用于处理复数的函数,如正弦、余弦、对数、幂运算等。
2 布尔类型(bool)
布尔类型(bool)在编程中是一种非常重要的数据类型,它只有两个取值:true(真)和false(假)。这种类型在多种编程语言中都有广泛应用,包括Python。布尔类型主要用于逻辑判断、条件控制、循环控制以及开关状态表示等场景。
在 Python 里面,布尔类型用来表示真(True)和假(False)。注意:这里的 True 和 False 与其它语言有些不一样,它们的首字母都要大写。
2.1 与数字类型有关的布尔类型
在Python中,布尔类型(bool
)与数字类型有关,但它不是传统的数字类型(如整数int
或浮点数float
)的直接子类。Python的布尔类型只有两个值:True
和 False
,并且它们具有与整数 1 和 0的等价性。这意味着在需要数值上下文的场合中(比如数学运算),True
会被视为 1,False
会被视为 0。
2.1.1 布尔类型和整型可以相互转换
print(int(True)) # 1
print(int(False)) # 0print(bool(1)) # True
print(bool(0)) # False
在上面的例子中,布尔类型和整型可以相互转换。这种等价性在多种情况下都很有用,比如在进行数学运算时,或者在需要布尔值与其他数字类型进行交互时。例如:
x = True
y = 2
result = x + y # 这里True被当作1来处理,所以结果是3
print(result) # 输出: 3
这种设计使得布尔值可以很容易地在需要整数的场合中使用,同时也保留了它们作为逻辑值的本质。
然而,从类型系统的角度来看,bool
并不是 int
的子类。它们是不同的类型,只是在某些情况下可以互相转换或表现出类似的行为。你可以通过 isinstance()
函数来验证这一点:
print(isinstance(True, bool)) # 输出: True
print(isinstance(True, int)) # 输出: False
2.1.2 非零的数字表示真(True),0表示假(False)
print(bool(2)) # True
print(bool(-2)) # True
print(bool(0.2)) # True
print(bool(0)) # False
2.1.3 其它的数据类型也可以转化为布尔类型
print(bool('python')) # 字符串:True
print(bool('')) # 空字符串:False
print(bool([1,3,5])) # 列表:True
print(bool([])) # 空列表:False
从上面的例子,我们可以看出:凡是非空的数据类型都是 True,空的数据类型都是 False。
Python里还有个特殊的类型 None,它的布尔类型也是 False 。
print(bool(None)) # False
因此,虽然布尔类型与数字类型有交互性,并且在某些上下文中可以视为数字,但从类型定义的角度来说,布尔类型不是数字类型的一种。它们在Python的类型系统中是分开定义的,并且具有不同的用途和行为。
2.2 布尔类型的常见用法
2.2.1 条件判断
布尔类型最常见的用法是在条件判断语句中,如 if 语句。根据布尔值的真假,程序会执行不同的代码块。例如:
x = 5
if x > 3: print("x 大于 3")
else: print("x 不大于 3")
在这个例子中,x > 3 是一个布尔表达式,如果其结果为true,则执行 if 语句块中的代码;如果为false,则执行 else 语句块中的代码。
2.2.2 循环控制
布尔类型也常用于循环控制语句中,如 while 循环。循环会一直执行,直到布尔表达式的值为false。例如:
count = 0
while count < 5: print(count) count += 1
在这个例子中,count < 5 是一个布尔表达式。当count的值小于5时,循环会继续执行;一旦count的值达到或超过5,循环就会停止。
2.2.3 逻辑运算
布尔类型支持逻辑运算,包括与(and)、或(or)和非(not)。这些运算符用于组合多个布尔表达式,以产生更复杂的逻辑条件。例如:
x = 5
y = 10
if (x > 3) and (y < 20): print("x 大于 3 且 y 小于 20")
在这个例子中,(x > 3) and (y < 20) 是一个组合了and运算符的布尔表达式。只有当x > 3和y < 20都为true时,整个表达式的值才为true。
2.2.4 表示开关状态
布尔类型也常用于表示某种开关状态或标记状态。例如,一个程序可能有一个布尔变量来跟踪用户是否已登录,或者一个游戏可能使用布尔变量来表示某个对象是否可见。
is_logged_in = True # 用户已登录
is_visible = False # 对象不可见
需要注意的是,在Python中,一些其他类型的值在布尔上下文中会被解释为true或false。例如,非零数字、非空字符串和非空列表等通常被视为true,而0、空字符串和空列表等被视为false。这种特性使得布尔类型在与其他类型交互时更加灵活。
总的来说,布尔类型是编程中不可或缺的一部分,它使得程序能够基于逻辑条件进行决策和控制流程。
相关文章:

Python基础语法:基本数据类型(数字类型和布尔类型)
在我们的日常生活中,经常会用到数字,所以数字(numbers)是 pytthon 中的一个基本数据类型。在 python 里面啊,numbers 这种数据类型是一个大类,在 numbers 这个大类下面有整型、浮点型(小数&…...

springboot 下载 Excel 文件的 Controller 层案例
环境 pom.xml 中 springboot版本: <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.15</version></parent>Excel 文件依赖: &l…...

RabbitMQ队列
RabbitMQ队列 1、死信的概念 先从概念解释上搞清楚这个定义,死信,顾名思义就是无法被消费的消息,字面意思可以这样理解,一般来说,producer将消息投递到broker或者直接到queue里了,consumer 从 queue取出消息进行消…...

Day12:信息打点-Web应用源码泄漏开源闭源指纹识别GITSVNDS备份
目录 开源-CMS指纹识别源码获取方式 闭源-习惯&配置&特性等获取方式 闭源-托管资产平台资源搜索监控 思维导图 章节点 Web:语言/CMS/中间件/数据库/系统/WAF等 系统:操作系统/端口服务/网络环境/防火墙等 应用:APP对象/API接口/微…...

使用正确的技术和项目管理工具来定义项目范围
根据 PMI 的统计,34% 的项目会出现范围蔓延:悄悄增加超出范围的活动,威胁到利润空间、项目成功率和客户满意度。 预防和控制范围蔓延的方法之一,是首先明确界定项目范围。 项目范围是项目规划、资源调度和变更管理的重要步骤。然…...

【C++】类型转换和IO流
目录 C语言中的类型转换 C eplicit && volatitle eplicit volatile C强制类型转换 static_cast(相关类型) reinterpret_cast(不相关类型) const_cast(去掉const属性) dynamic_cast RTTI(了解) IO流 …...

leetCode刷题 5.最长回文子串
目录 1. 思路 2. 解题方法 3. 复杂度 4. Code 题目: 给你一个字符串 s,找到 s 中最长的回文子串。 如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。 示例 1: 输入:s "babad" 输出&#x…...

计算机组成原理面试题
计算机组成原理是计算机科学的基础课程之一,涉及计算机系统的基本结构和工作原理。以下是一些可能出现在面试中的计算机组成原理相关题目: 1. **什么是冯诺依曼体系结构?** - 冯诺依曼体系结构是一种计算机组织架构,它将程序指…...

「Mybatis深入三」:高级查询-模糊查询
一、需求 根据username 模糊查询user 表 二、代码演示 1、方式1 数据库环境 CREATE DATABASE mybatis_db; USE mybatis_db; CREATE TABLE user (id INT(11) NOT NULL AUTO_INCREMENT,username VARCHAR(32) NOT NULL COMMENT 用户名称,birthday DATETIME DEFAULT NULL COMMEN…...

LabVIEW管道缺陷智能检测系统
LabVIEW管道缺陷智能检测系统 管道作为一种重要的输送手段,其安全运行状态对生产生活至关重要。然而,随着时间的推移和环境的影响,管道可能会出现老化、锈蚀、裂缝等多种缺陷,这些缺陷若不及时发现和处理,将严重威胁到…...

java在cmd中乱码的问题解决
本文深入探讨了在使用 Java 命令行(cmd)时可能出现的中文乱码问题,并提供了两种解决方案。首先,通过临时的方式,用户可以执行命令 chcp 936 选择字符集,然后再运行 Java 命令,确保在选择字符集过…...

OpenHarmony教程指南—ArkUI中组件、通用、动画、全局方法的集合
介绍 本示例为ArkUI中组件、通用、动画、全局方法的集合。 本示例使用 Tabs容器组件搭建整体应用框架,每个 TabContent内容视图 使用 div容器组件 嵌套布局,在每个 div 中使用 循环渲染 加载此分类下分类导航数据,底部导航菜单使用 TabCont…...

第二证券|金价逼近历史高点 黄金股价值有望重估
经过两个多月的震荡后,黄金打响新一波攻势,期货商场价格已逼近前史高点。 有分析认为,虽然黄金价格短期已有显着涨幅,存在震荡或许,但中长时间看,跟着美联储钱银政策的转向,黄金价格仍有上行动…...

关于51单片机晶振定时问题
单片机中晶振频率为12MHZ的机器周期怎么算? 1、系统晶振频率是12M,则机器周期=12/12=1us; 2、定时1ms=1*1000=1000us; 3、工作在方式1下:最大计数值是2&a…...

NoSQL--2.MongoDB配置(Windows版)
目录 2.MongdoDB配置 2.1 Windows环境下操作 2.1.1 注册MongDB Atlas: 2.1.2 MongoDB Community Server Download: 2.1.3 启动MondgoDB服务: 2.1.3.1 命令行参数的方式启动MongoDB服务: 2.1.3.2 使用配置文件方式启动Mongo…...

HTML静态网页成品作业(HTML+CSS)——安徽宣笔设计制作(5个页面)
🎉不定期分享源码,关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 🏷️本套采用HTMLCSS,未使用Javacsript代码,共有6个页面。 🏷️想要…...

MySQL CTEs通用表表达式:进阶学习-递归查询
MySQL CTEs通用表表达式:进阶学习-递归查询 递归通用表表达式是其会引用自身的通用表表达式。 CTEs 递归通用表表达式补上了MySQL8之前无法使用递归查询的空白。在之前,递归查询需要使用函数等方法实现。 基础使用,请参考前文: …...

[Java安全入门]二.序列化与反序列化
一.概念 Serialization(序列化)是一种将对象以一连串的字节描述的过程;反序列化deserialization是一种将这些字节重建成一个对象的过程。将程序中的对象,放入文件中保存就是序列化,将文件中的字节码重新转成对象就是反…...

Dutree:Linux 文件系统磁盘使用追踪工具
在 Linux 系统中,对文件系统的磁盘使用情况进行跟踪和管理是至关重要的。dutree 是一个功能强大的工具,它能够以可视化的方式展示文件系统中的目录和文件的大小,帮助用户更好地了解磁盘空间的使用情况。本文将介绍 dutree 工具的使用方法、功…...

http和https的区别是什么?
–前言 传输信息安全性不同、连接方式不同、端口不同、证书申请方式不同 一、传输信息安全性不同 1、http协议:是超文本传输协议,信息是明文传输。如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息。 2、h…...

学习Android的第十九天
目录 Android ExpandableListView 分组列表 ExpandableListView 属性 ExpandableListView 事件 ExpandableListView 的 Adapter 范例 参考文档 Android ViewFlipper 翻转视图 ViewFlipper 属性 ViewFlipper 方法 为 ViewFlipper 加入 View 例子:全屏幕可…...

C#上位机调试经验
1.使用Visual Studio的远程工具 因为上位机软件安装在工控机上,不方便调试。如果直接把代码放在工控机上,又不太安全。 可以在工控机上安装一个Visual Studio的远程工具,把随身带的笔记本电脑通过网线插在工控机上 这样可以在笔记本上使用…...

BUUCTF---[极客大挑战 2019]BabySQL1
1.这道题和之前做的几道题是相似的,这道题考的知识点更多。难度也比之前的大一些 2.尝试万能密码 or 1#发现过滤了or,使用1和1,发现他对单引号也进行了过滤。于是我尝试进行双写绕过,发现可以通过了。 3.由之前的做题经验可知,这道题会涉及到…...

0基础跨考计算机|408保姆级全年计划
我也是零基础备考408! 虽说是计算机专业,但是本科一学期学十几门,真的期末考试完脑子里什么都不进的...基本都是考前一周发疯学完水过考试...😅 想要零基础跨考可以直接从王道开始!跟教材一点一点啃完全没必要🥸 现在…...

C# 操作LiteDB
1、很简单的东西不废话,直接上图上代码。 2、NuGet程序中根据自己的项目版本安装LiteDB,如下图: 3、程序运行加过如下图: 4、程序代码如下: using System; using System.Collections.Generic; using System.Linq; using System…...

LeetCode 2917.找出数组中的 K-or 值:基础位运算
【LetMeFly】2917.找出数组中的 K-or 值:基础位运算 力扣题目链接:https://leetcode.cn/problems/find-the-k-or-of-an-array/ 给你一个下标从 0 开始的整数数组 nums 和一个整数 k 。 nums 中的 K-or 是一个满足以下条件的非负整数: 只有…...

MySQL窗口函数:从理论到实践
目录 1. ROW_NUMBER() 2. RANK() 3. DENSE_RANK() 4. NTILE(n) 5. LAG() 和 LEAD() 6. FIRST_VALUE() 和 LAST_VALUE() 总结 MySQL中的窗口函数(Window Functions)允许用户对一个结果集的窗口(或分区)执行计算,…...

Vue+SpringBoot打造考研专业课程管理系统
目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 考研高校模块2.3 高校教师管理模块2.4 考研专业模块2.5 考研政策模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 考研高校表3.2.2 高校教师表3.2.3 考研专业表3.2.4 考研政策表 四、系统展示五、核…...

python基础第二天
世界杯小组赛成绩 注意: 1.循环 1.1while 1.2for 1.3 range 1.4 while else while 循环正常执行完才能执行else语句...

YOLOV9论文解读
代码:https://github.com/WongKinYiu/yolov9论文:https://arxiv.org/abs/2402.1361本文提出可编程梯度信息(PGI)和基于梯度路径规划的通用高效层聚合网络(GELAN),最终铸成YOLOv9目标检测全新工作!性能表现SOTA!在各个方…...