🔢 04. 数值类型 int/float/bool
本章概述
学习 Python 的数值类型:整数、浮点数、布尔值。 预计学习时间:40 分钟
4.1 整数 int
Python 的整数没有大小限制,可以无限大:
a = 10
b = -100
c = 9999999999999999999999999999 # 超大数也没问题
print(c)不同进制表示
| 进制 | 前缀 | 示例 | 对应十进制 |
|---|---|---|---|
| 十进制 | 无 | 10 | 10 |
| 二进制 | 0b | 0b1010 | 10 |
| 八进制 | 0o | 0o12 | 10 |
| 十六进制 | 0x | 0xA | 10 |
进制转换函数
bin(10) # 转二进制:'0b1010'
oct(10) # 转八进制:'0o12'
hex(10) # 转十六进制:'0xa'4.2 浮点数 float
就是小数,有两种写法:
# 普通写法
3.14
-2.5
# 科学计数法
1.5e2 # 1.5 × 10² = 150.0
1.5e-2 # 1.5 × 10⁻² = 0.015⚠️ 浮点数精度问题
重要!
浮点数运算可能有精度误差,不要直接比较浮点数是否相等!
print(0.1 + 0.2) # 0.30000000000000004(不是0.3!)原因:计算机用二进制存储浮点数,有些小数无法精确表示。
解决方法:
- 用
decimal模块做精确计算 - 比较时判断差值是否小于某个很小的数
# 方法1:判断差值
abs(0.1 + 0.2 - 0.3) < 1e-9 # True
# 方法2:使用decimal模块
from decimal import Decimal
Decimal('0.1') + Decimal('0.2') # Decimal('0.3')4.3 布尔值 bool
只有两个值:True 和 False(首字母大写)
is_ok = True
is_error = False布尔值本质
布尔值本质是整数的子类:
print(True == 1) # True
print(False == 0) # True
print(True + 1) # 2
print(False + 10) # 10小技巧
因为布尔值可以当数字用,所以可以这样写:
# 统计True的个数 counts = [True, False, True, True] sum(counts) # 3
什么情况下值为 False?
假值汇总
以下值在布尔判断中都是
False:
False,None0,0.0,0j"",[],(),{},set(),range(0)其他所有值都是
True
4.4 常用数学函数
内置函数
abs(-10) # 10(绝对值)
round(3.14159, 2) # 3.14(四舍五入,保留2位小数)
max(1, 5, 3) # 5(最大值)
min(1, 5, 3) # 1(最小值)
sum([1,2,3,4]) # 10(求和)
pow(2, 3) # 8(幂运算,等价于2**3)
divmod(7, 3) # (2, 1)(商和余数)4.5 math 模块常用函数
import math
math.sqrt(16) # 4.0(平方根)
math.pow(2, 3) # 8.0(幂运算)
math.floor(3.7) # 3(向下取整)
math.ceil(3.2) # 4(向上取整)
math.trunc(3.7) # 3(截断小数部分)
math.pi # 3.1415926535...(圆周率)
math.e # 2.718281828...(自然常数)
math.sin(math.pi/2) # 1.0(正弦)
math.cos(0) # 1.0(余弦)
math.log(100, 10) # 2.0(对数)
math.factorial(5) # 120(阶乘)
math.gcd(12, 8) # 4(最大公约数)更多数学函数
完整的 math 模块函数列表见 内置函数大全
4.6 random 模块(随机数)
import random
# 随机整数(包含两端)
random.randint(1, 10) # 1到10之间的随机整数
# 随机浮点数(0到1之间)
random.random() # 0.0到1.0之间
# 随机浮点数(指定范围)
random.uniform(1, 10) # 1到10之间的随机小数
# 从序列中随机选一个
random.choice(["a", "b", "c"])
# 从序列中随机选多个(不重复)
random.sample([1,2,3,4,5], 3) # 随机选3个
# 打乱列表顺序(原地打乱)
lst = [1, 2, 3, 4, 5]
random.shuffle(lst)注意
random 是伪随机数,不是真正的随机。 需要加密级随机数请用
secrets模块。
🔗 相关章节
📝 我的笔记
在这里记录你的理解、疑问和练习代码
# 你的练习代码
✅ 本章检查清单
- 掌握整数的不同进制表示
- 了解浮点数精度问题及解决方法
- 理解布尔值的本质和假值规则
- 会使用常用的数学函数
- 会使用 math 模块
- 会使用 random 模块生成随机数