Python3 数字(Number)
Python3 学习笔记 · 整理自菜鸟教程
一句话
Python3 的数字类型有 int(整数)、float(浮点)、complex(复数),bool 是 int 的子类;数字不可变,运算会自动在类型间转换。
要点
- 四种数字类型:
int任意精度整数;float双精度浮点(约 17 位有效数字);complex复数(a+bj,实部虚部均为 float);bool取值True/False,本质是1/0。 - 不可变:数字对象一旦创建就不能改。
x += 1是创建新对象并重新绑定变量,不是原地修改。 - 类型自动转换:整数与浮点运算,结果为浮点;整数除法
/永远返回 float,整除//返回向下取整的结果(类型随操作数)。 //向下取整:-7 // 2 == -4(不是 -3),取整方向向负无穷。**幂运算:2 ** 10 == 1024,也可用pow(2, 10)。- 删除引用:
del x删除变量(不是删除数字对象本身)。 - math 模块:数学常量与函数,需
import math。 - random 模块:伪随机数生成,需
import random。
语法 / 常用方法
| 语法/方法 | 说明 | 示例 |
|---|---|---|
int(x) / float(x) / complex(x) |
类型转换 | int("12") → 12 |
** |
幂运算 | 3 ** 2 → 9 |
// |
整除(向下取整) | -7 // 2 → -4 |
% |
取模(余数) | 7 % 3 → 1 |
divmod(a, b) |
同时返回商和余数 | divmod(7, 3) → (2, 1) |
abs(x) |
绝对值 | abs(-3.5) → 3.5 |
round(x, n) |
四舍六入五成双,保留 n 位 | round(2.675, 2) → 2.67 |
math.ceil(x) / math.floor(x) |
上取整 / 下取整 | math.ceil(1.1) → 2 |
math.sqrt(x) |
平方根(返回 float) | math.sqrt(16) → 4.0 |
math.pow(a, b) |
幂(返回 float) | math.pow(2, 3) → 8.0 |
math.pi / math.e |
圆周率 / 自然常数 | math.pi → 3.141592653589793 |
math.pi 等 |
三角函数 | math.sin(math.pi/2) → 1.0 |
math.fabs(x) |
绝对值(float) | math.fabs(-5) → 5.0 |
random.random() |
[0.0, 1.0) 随机浮点 | random.random() |
random.randint(a, b) |
[a, b] 随机整数 | random.randint(1, 6) |
random.choice(seq) |
从序列随机取一个 | random.choice("abc") |
random.shuffle(lst) |
原地打乱列表 | random.shuffle([1,2,3]) |
random.uniform(a, b) |
[a, b] 随机浮点 | random.uniform(1, 2) |
random.seed(x) |
设定随机种子(可复现) | random.seed(42) |
代码示例
1 | |
易错点
- 整数除法:
10 / 3是3.333...(float),要整除用//。 //对负数向下取整:-7 // 2 == -4,和int(-7 / 2)的-3不同。- 浮点精度:
0.1 + 0.2 != 0.3(是0.30000000000000004),比较浮点用math.isclose()。 - round 不是四舍五入:采用银行家舍入,
round(0.5) == 0、round(1.5) == 2。 int()对字符串截断 vs 报错:int("3.9")会抛ValueError,先转float再int。- 复数不能直接比较大小,用
abs()比较模。 del x后变量名不可再用,但其他引用不受影响(引用计数/GC 机制)。