一、数字类型体系:数值世界的基石
1.1 数值类型分类
Python支持四种核心数字类型:
类型 | 示例 | 特征 | 存储范围 |
---|---|---|---|
int | 42, -7, 0 | 整数,无小数点 | 取决于系统架构(64位) |
float | 3.14, -0.001 | 双精度浮点数 | 约±1.8×10³⁰⁸ |
complex | 3+4j, 2-5j | 复数(实部+虚部) | 双精度组件 |
bool | True, False | 逻辑值(0/1的别名) | 仅两个取值 |
注意:布尔类型是int的子类,
True == 1
和False == 0
均为True
1.2 复数类型示例
# 复数运算
z = 3 + 4j
print(z.real) # 输出实部3.0
print(z.imag) # 输出虚部4.0
print(z.conjugate()) # 共轭复数(3-4j)
二、类型转换:数值形态变换术
2.1 显式类型转换
# 整数转浮点
print(float(5)) # 输出5.0
# 浮点转整数(截断取整)
print(int(3.9)) # 输出3
print(int(-2.7)) # 输出-2
# 字符串转数值
print(int("42")) # 输出42
print(float("3.14"))# 输出3.14
# 数值转字符串
print(str(100) + "元") # 输出"100元"
2.2 转换异常处理
# 无效转换处理
try:
print(int("12.3")) # 触发ValueError
except ValueError:
print("无法转换含小数点的字符串")
# 安全转换方案
def safe_convert(s):
try:
return int(s)
except ValueError:
return float(s) if '.' in s else None
print(safe_convert("3.14")) # 输出3.14
三、数学函数库:数值计算的瑞士军刀
3.1 math模块核心函数
import math
# 基础运算
print(math.ceil(3.2)) # 上取整→4
print(math.floor(3.8)) # 下取整→3
print(math.fabs(-5.5)) # 绝对值→5.5
# 幂与根
print(math.pow(2, 3)) # 8.0
print(math.sqrt(16)) # 4.0
# 三角函数
print(math.sin(math.pi/2)) # 1.0
print(math.degrees(math.pi))# 180.0
# 对数计算
print(math.log(100, 10)) # 2.0(以10为底)
print(math.exp(1)) # e≈2.718
3.2 随机数模块
import random
# 基础随机数
print(random.random()) # [0.0,1.0)浮点数
print(random.randint(1,10))# 1-10闭区间整数
# 范围选择
print(random.choice(['红', '蓝', '绿'])) # 随机选取元素
print(random.sample(range(1,50), 5)) # 无重复抽样
# 洗牌操作
cards = ['♠','♥','♦','♣']*13
random.shuffle(cards)
print(cards[:5]) # 输出随机排列的前5张
四、运算规则详解:数值操作的底层逻辑
4.1 算术运算优先级
运算顺序遵循PEMDAS法则:
- 括号
()
- 指数
**
- 正负号
+x
-x
- 乘除
*
/
//
%
- 加减
+
-
# 计算顺序演示
result = 3 + 5 * 2 ** 2 - 6 // 3
# 分解步骤:
# 2**2=4 → 5 * 4=20 → 6//3=2 → 3+20=23 → 23-2=21
print(result) # 输出21
4.2 浮点数精度问题
# 精度误差演示
print(0.1 + 0.2) # 输出0.30000000000000004
print(round(2.675, 2)) # 输出2.67(四舍五入规则)
# 解决方案:使用Decimal模块
from decimal import Decimal
print(Decimal('0.1') + Decimal('0.2')) # 输出0.3
五、随机数系统:概率世界的引擎
5.1 随机种子控制
# 固定种子保证可重复性
random.seed(42)
print(random.random()) # 总是输出0.6394267984578837
# 时间种子(每次不同)
random.seed()
5.2 高级应用案例
import random
# 生成验证码
def generate_code(length=6):
chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
return ''.join(random.choices(chars, k=length))
print(generate_code()) # 示例输出:QW9F3E
# 模拟骰子游戏
def dice_roll(n=2):
return [random.randint(1,6) for _ in range(n)]
print(dice_roll()) # 示例输出:[3,5]
六、常见问题与解决方案
6.1 大整数处理
# 超长整数运算
big_num = 10 ** 1000
print(big_num ** 2) # 支持任意精度计算
# 科学计数法表示
print(1.23e10) # 输出12300000000.0
6.2 类型混合运算
# int与float运算
print(3 + 4.5) # 输出7.5(结果转为float)
# bool参与数值运算
print(True + 5) # 输出6(True=1)
print(False * 10) # 输出0(False=0)