🔢 04. 数值类型 int/float/bool

本章概述

学习 Python 的数值类型:整数、浮点数、布尔值。 预计学习时间:40 分钟


4.1 整数 int

Python 的整数没有大小限制,可以无限大:

a = 10
b = -100
c = 9999999999999999999999999999  # 超大数也没问题
print(c)

不同进制表示

进制前缀示例对应十进制
十进制1010
二进制0b0b101010
八进制0o0o1210
十六进制0x0xA10

进制转换函数

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!)

原因:计算机用二进制存储浮点数,有些小数无法精确表示。

解决方法

  1. decimal 模块做精确计算
  2. 比较时判断差值是否小于某个很小的数
# 方法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

只有两个值:TrueFalse(首字母大写)

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, None
  • 0, 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 模块生成随机数