Python 数字类型与数值运算解析

📅 2026/8/4 21:47:51
Python 数字类型与数值运算解析
目录一、Python三种数字类型1. 整数 int1多进制书写规范2进制转换原理2. 浮点数 float3. 复数 complex二、基础数值运算符运算两大核心规则三、增强赋值运算符四、比较运算符五、逻辑运算符七、内置数值运算函数八、综合运算例题例题1复杂表达式计算例题2混合运算优先级例题3复数运算例题4增强赋值运算九、本章总结上一章我们梳理了 Python 基础语法规范、变量命名规则、基础数据类型的区分逻辑认识了整数、浮点数、复数三种基础数字形态。本章将深度展开全部数字相关知识点完整讲解三种数字类型的书写规范、各类运算符、内置数学函数同时补充细节便于学习和理解。一、Python三种数字类型Python内置三类数字整数int、浮点数float、复数complex分别对应数学里整数、实数、复数概念三者在书写规则、存储特性、适用场景上各有区分。1. 整数 int整数就是不含小数部分的数值涵盖正数、负数、0。和其他编程语言不同Python整数不存在数值溢出限制无论多大的数字都能完整存储计算。1多进制书写规范整数支持四种进制表达每种进制拥有专属引导前缀不同进制数字可以直接混合运算进制引导标识书写示例十进制无前缀默认123、-56二进制0b / 0B0b101、0B1100八进制0o / 0O0o12、0O77十六进制0x / 0X0x1a、0Xff2进制转换原理理解不同进制之间的转换有助于深入掌握计算机底层数据表示。所有转换的核心都是基于“位权”展开。1. 二进制 ↔ 十进制二进制转十进制按权展开法将二进制数每一位的值0或1乘以该位的权重2的n次方n从右向左从0开始然后求和。示例二进制0b1011转十进制从右向左各位权重2⁰1, 2¹2, 2²4, 2³8对应位值1最右、1、0、1最左计算1×1 1×2 0×4 1×8 1 2 0 8 11所以0b1011的十进制值是 11。十进制转二进制除2取余法将十进制数不断除以2记录每次的余数0或1直到商为0然后将余数从下往上最后一次除法的余数在最前排列。示例十进制 29 转二进制使用除2取余法的竖式计算过程29 ÷ 2 14 ... 余 1 ↑ 14 ÷ 2 7 ... 余 0 ↑ 7 ÷ 2 3 ... 余 1 ↑ 3 ÷ 2 1 ... 余 1 ↑ 1 ÷ 2 0 ... 余 1 ↑ 从下往上读取余数从下往上读取余数11101所以 29 的二进制表示为0b11101。验证使用Python内置函数验证print(bin(29)) # 输出 0b11101 print(int(11101, 2)) # 输出 292. 八进制 ↔ 十进制八进制转十进制方法与二进制类似但权重是8的n次方。示例八进制0o157转十进制从右向左各位权重8⁰1, 8¹8, 8²64对应位值7、5、1计算7×1 5×8 1×64 7 40 64 111十进制转八进制使用“除8取余法”过程与转二进制类似。示例十进制 95 转八进制95 ÷ 8 11 ... 余711 ÷ 8 1 ... 余31 ÷ 8 0 ... 余1从下往上读取余数137所以 95 的八进制表示为0o137。3. 十六进制 ↔ 十进制十六进制转十进制权重是16的n次方注意A-F分别代表10-15。示例十六进制0x1F转十进制从右向左各位权重16⁰1, 16¹16对应位值F(15)、1计算15×1 1×16 15 16 31十进制转十六进制使用“除16取余法”余数10-15需转换为A-F。示例十进制 255 转十六进制255 ÷ 16 15 ... 余15(F)15 ÷ 16 0 ... 余15(F)从下往上读取余数FF所以 255 的十六进制表示为0xFF。4. Python 内置转换函数Python 提供了便捷的内置函数进行进制转换bin(x)将整数转换为二进制字符串如bin(11)返回0b1011oct(x)将整数转换为八进制字符串如oct(95)返回0o137hex(x)将整数转换为十六进制字符串如hex(255)返回0xffint(x, base)将字符串按指定进制转换为十进制整数base代表的是进制如int(1011, 2)返回11示例# 不同进制整数直接相加 print(0x1d 5) # 输出 34 # 使用内置函数转换 print(bin(29)) # 输出 0b11101 print(oct(95)) # 输出 0o137 print(hex(255)) # 输出 0xff print(int(0b1011, 2)) # 输出 11 print(int(0o157, 8)) # 输出 111 print(int(0x1F, 16)) # 输出 312. 浮点数 float浮点数对应数学实数必须携带小数部分哪怕小数为0如100是整数100.0则属于浮点数。浮点数有两种标准书写形式普通小数写法3.14、-0.618、9.0科学计数法格式数字e/±指数适合超大/极小数值E/e代表十的次方比如E2代表10的2次方示例# 科学计数转换 num1 6.18E-1 # 等价0.618 num2 2.9979e8 # 等价299790000.0 print(num1, num2)补充浮点数底层二进制存储存在天然精度损耗直接用小数做等值判断容易出错高精度计算建议使用decimal标准库。下面通过一个具体示例展示浮点数精度误差问题及其解决方案# 示例浮点数精度误差导致的等值判断问题 print(0.1 0.2 0.3) # 输出 False print(0.1 0.2) # 输出 0.30000000000000004 # 解决方案1使用 math.isclose() 进行容差比较 import math print(math.isclose(0.1 0.2, 0.3)) # 输出 True # 解决方案2使用 decimal 库进行精确计算 from decimal import Decimal result Decimal(0.1) Decimal(0.2) print(result Decimal(0.3)) # 输出 True print(float(result)) # 输出 0.3解释说明问题根源浮点数在计算机中采用二进制存储像 0.1、0.2 这样的十进制小数无法用有限位二进制精确表示导致计算时产生微小误差。math.isclose() 方案通过设置相对容差rel_tol和绝对容差abs_tol来判断两个浮点数是否足够接近默认 rel_tol1e-9, abs_tol0.0。decimal 库方案使用 Decimal 类型进行精确的十进制运算特别适合金融、货币等对精度要求高的场景。3. 复数 complex复数由实部、虚部两部分组成书写格式abjj是Python规定的虚数单位。规则虚部数字为1时不能省略必须写成1j而非j实部、虚部底层全部为浮点类型。c 10 2j print(c.real) # 获取实部 print(c.imag) # 获取虚部复数多用于数学建模、信号运算日常业务开发使用频率较低。二、基础数值运算符Python提供9个核心算术运算符覆盖加减乘除、幂次、取余等全部数值计算需求。运算符作用说明加法-减法*乘法/普通除法结果固定为浮点数//整数地板除向下取整%取模求余数x取原值-x取负数**幂运算x的y次方运算两大核心规则精度自动提升多种数字类型混合运算时计算结果自动向精度更高的类型转换int float complex例1 2.14结果3.14整型转浮点3 (5-4j)自动转为复数计算。运算符优先级优先级从高到低**幂运算 * / // %乘除取余 -加减同优先级从左至右计算多层幂运算从右向左计算2**2**3等价2 ** (2**3)结果256。# 加法运算 print(5 3) # 输出 8 print(2.5 1.5) # 输出 4.0 print(3 4j 2 1j) # 输出 (55j) # 减法运算 print(10 - 4) # 输出 6 print(7.5 - 2.5) # 输出 5.0 print(8 - 3j - 2 - 1j) # 输出 (6-4j) # 乘法运算 print(6 * 7) # 输出 42 print(2.5 * 4) # 输出 10.0 print((23j) * (12j)) # 输出 (-47j) # 除法运算总是返回浮点数 print(10 / 2) # 输出 5.0 print(7 / 3) # 输出 2.3333333333333335 print(5.0 / 2) # 输出 2.5 # 地板除运算 print(10 // 3) # 输出 3向下取整 print(10.0 // 3) # 输出 3.0 print(-10 // 3) # 输出 -4注意负数的向下取整 # 取模运算 print(10 % 3) # 输出 1 print(10.5 % 3) # 输出 1.5 print(-10 % 3) # 输出 2Python取模结果总是非负 # 幂运算 print(2 ** 3) # 输出 8 print(4 ** 0.5) # 输出 2.0平方根 print(2 ** -2) # 输出 0.25 print(2 ** 2 ** 3) # 输出 256从右向左计算2**(2**3) # 正负号运算 x 5 print(x) # 输出 5 print(-x) # 输出 -5 print(-(-x)) # 输出 5三、增强赋值运算符日常代码中经常需要对变量自增、自乘Python提供简化赋值写法规则x op y等价x x op y对应全套增强运算符、-、*、/、//、%、**示例x 2 x ** 3 # 等同于 x x ** 3 print(x) # 输出8四、比较运算符用于对比两个数字大小运算结果只有True/False布尔值。运算符含义大于大于等于小于小于等于判断相等!判断不相等关键限制复数仅支持、!等值判断无法使用大小对比执行 会直接抛出类型错误。# 整数比较 print(10 5) # True print(10 5) # False print(10 10) # True print(10 9) # False # 浮点数比较 print(3.14 3.0) # True print(2.5 2.7) # True print(1.0 1) # True类型不同但值相等 print(1.0 is 1) # Falseis比较对象身份不是值 # 混合类型比较自动类型转换 print(5 5.0) # True print(3 3.1) # True print(10 10.0) # True # 链式比较 print(1 2 3) # True等价于 1 2 and 2 3 print(5 3 1) # True print(2 2 3) # True # 不等于运算 print(5 ! 3) # True print(4.0 ! 4) # False print(23j ! 32j) # True # 复数等值判断 c1 3 4j c2 3.0 4.0j c3 4 3j print(c1 c2) # True实部虚部都相等 print(c1 c3) # False实部虚部不相等 print(c1 ! c3) # True # 尝试复数大小比较会报错 try: print(34j 25j) except TypeError as e: print(f复数不能比较大小: {e}) # 输出错误信息五、逻辑运算符逻辑运算用于多条件组合判断仅识别0为假所有非0数字都判定为真。运算符规则and 与一假即假全真返回最后一个真值or 或一真即真全假返回最后一个假值not 非布尔取反# and 运算符与 print(5 and 3) # 输出 3两个都为真返回最后一个 print(0 and 5) # 输出 0第一个为假直接返回0 print(2 and 0) # 输出 0第二个为假返回0 print(3.5 and 2.1) # 输出 2.1浮点数非0为真 # or 运算符或 print(5 or 3) # 输出 5第一个为真直接返回5 print(0 or 3) # 输出 3第一个为假返回第二个 print(0 or 0.0) # 输出 0.0两个都为假返回最后一个 print(0 or False) # 输出 False0和False都视为假 # not 运算符非 print(not 5) # 输出 False5为真取反为假 print(not 0) # 输出 True0为假取反为真 print(not 3.14) # 输出 False print(not 0.0) # 输出 True # 复合逻辑运算 print(3 and 4 or 5) # 输出 4先算3 and 4得4再算4 or 5得4 print(0 and 4 or 5) # 输出 5先算0 and 4得0再算0 or 5得5 print(not 0 and 5) # 输出 5先算not 0得True再算True and 5得5 print(not 3 and 5) # 输出 False先算not 3得False再算False and 5得False # 短路求值特性 def test_func(): print(函数被调用) return 10 print(0 and test_func()) # 输出 0test_func()不会被调用 print(1 or test_func()) # 输出 1test_func()不会被调用 print(0 or test_func()) # 输出 10test_func()被调用 # 实际应用条件判断 age 25 score 85 print(age 18 and score 60) # 输出 True print(age 18 or score 60) # 输出 False七、内置数值运算函数Python自带一套无需额外导入的数学工具函数日常数值计算无需手动实现逻辑函数功能abs(x)获取数字绝对值复数会返回模长divmod(x,y)同时返回地板除、余数二元组 (x//y, x%y)pow(x,y,[z])幂运算带z则等价(x**y)%zround(x,ndigits)四舍五入保留指定位小数不填位数返回整数max()传入多个数字返回最大值min()传入多个数字返回最小值补充拓展知识点round函数并非严格四舍五入存在银行舍入规则0.5会向偶数靠拢高精度小数取舍建议使用decimal库abs()对复数生效会计算复数模普通math库abs仅支持实数pow内置函数比**搭配取余运算效率更高大量循环计算推荐使用。八、综合运算例题下面通过四个综合例题演示Python数值运算的实际应用。每个例题都包含题目和对应的Python代码实现。例题1复杂表达式计算题目计算30 - 3**2 8 // 3**2 * 10# 例题1复杂表达式计算 result 30 - 3**2 8 // 3**2 * 10 print(f30 - 3**2 8 // 3**2 * 10 {result})解法思路按照运算符优先级先计算幂运算3**2 9然后计算整数地板除8 // 9 0接着计算乘法0 * 10 0最后计算30 - 9 0 21。例题2混合运算优先级题目计算3 * 4**2 / 8 % 5# 例题2混合运算优先级 result 3 * 4**2 / 8 % 5 print(f3 * 4**2 / 8 % 5 {result})解法思路先计算幂运算4**2 16然后计算乘法3 * 16 48接着计算除法48 / 8 6.0最后计算取模6.0 % 5 1.0。例题3复数运算题目计算(2.51.25j)*4j/2# 例题3复数运算 result (2.51.25j)*4j/2 print(f(2.51.25j)*4j/2 {result}) print(f实部: {result.real}, 虚部: {result.imag})解法思路先计算4j/2 2j然后进行复数乘法(2.51.25j) * 2j。根据复数乘法规则(abj)*(cdj) (ac-bd) (adbc)j代入a2.5, b1.25, c0, d2得到(-2.5) (5)j。例题4增强赋值运算题目设x1执行x * 35**2# 例题4增强赋值运算 x 1 x * 35**2 print(fx 1; x * 35**2; 最终 x {x})解法思路先计算右侧表达式35**2其中5**2 25所以325 28。然后执行增强赋值运算x 1 * 28最终x 28。以上四个例题涵盖了本章的核心知识点建议在Python环境中运行代码验证计算结果加深理解。九、本章总结本章介绍了Python数字相关内容区分整数、浮点数、复数三类存储结构梳理多进制书写规范罗列算术、赋值、比较、逻辑、成员五类运算符同时讲解内置数学工具函数。需要重点记住几点核心规则不同数字混合运算自动向高精度类型转换幂运算优先级高于乘除多层幂运算从右向左计算复数仅支持等值判断无法比较大小浮点数天然存在精度误差高精度计算需专用库内置abs、divmod、pow等函数可简化常规数学计算。