Python: 数学与统计
最后更新:2026-09-22
数值计算是编程的基本功。Python 的标准库提供了从基础数学函数到统计分析、从精确十进制到分数运算的全套工具。这一课让你学会在合适的场景用合适的模块。
1. math——数学函数
PYTHON
import math
# 常用常量
print(math.pi) # 3.141592653589793
print(math.e) # 2.718281828459045
# 取整
print(math.ceil(3.14)) # 4(向上取整)
print(math.floor(3.14)) # 3(向下取整)
# 幂和对数
print(math.pow(2, 10)) # 1024.0(2的10次方)
print(math.sqrt(16)) # 4.0(平方根)
print(math.log(100, 10)) # 2.0(以10为底的对数)
# 三角函数
print(math.sin(math.pi / 2)) # 1.0
print(math.cos(0)) # 1.0
print(math.radians(180)) # 3.14159...(角度→弧度)
▶ 示例:距离计算(难度⭐)
▶ 试一试输出:
TEXT
📖 仅展示
# 函数定义成功
2. statistics——统计分析
PYTHON
import statistics
data = [12, 15, 18, 20, 22, 25, 30, 35, 40]
# 集中趋势
print(statistics.mean(data)) # 24.11(平均数)
print(statistics.median(data)) # 22(中位数)
# print(statistics.mode(data)) # 众数(数据无重复时会报错)
# 离散程度
print(statistics.stdev(data)) # 9.32(样本标准差)
print(statistics.variance(data)) # 86.86(样本方差)
▶ 示例:成绩分析(难度⭐⭐)
▶ 试一试输出:
TEXT
📖 仅展示
=== 成绩分析 ===
\n=== 等级分布 ===
▶ 示例:统计模块实战(难度⭐⭐)
▶ 试一试输出:
TEXT
📖 仅展示
=== 城市气温统计 ===
北京:
年均温:17.7°C
中位数:18.0°C
标准差:10.8°C
波动范围:6.8°C ~ 28.5°C
上海:
年均温:17.6°C
中位数:18.0°C
标准差:9.4°C
波动范围:8.2°C ~ 27.0°C
3. decimal——精确小数
PYTHON
from decimal import Decimal, getcontext
# float 的精度问题
print(0.1 + 0.2) # 0.30000000000000004 ❌
# Decimal 精确计算
print(Decimal("0.1") + Decimal("0.2")) # 0.3 ✅
# 设置精度
getcontext().prec = 4 # 全局精度为 4 位
print(Decimal(1) / Decimal(3)) # 0.3333(4位精度)
# 金额计算必须用 Decimal
price = Decimal("19.99")
quantity = Decimal("3")
tax_rate = Decimal("0.08")
total = price * quantity
tax = total * tax_rate
print(f"总价:{total:.2f}") # 59.97
print(f"税费:{tax:.2f}") # 4.80
print(f"应付:{total + tax:.2f}") # 64.77
4. fractions——分数运算
PYTHON
from fractions import Fraction
# 创建分数
f1 = Fraction(1, 3) # 1/3
f2 = Fraction(2, 6) # 自动约分为 1/3
print(f1) # 1/3
print(f2) # 1/3
print(f1 == f2) # True
# 分数运算
a = Fraction(1, 2)
b = Fraction(1, 3)
print(a + b) # 5/6
print(a * b) # 1/6
print(a / b) # 3/2
# 分数和浮点数互转
print(float(Fraction(1, 3))) # 0.3333333333
print(Fraction(0.25).limit_denominator()) # 1/4
5. 常见应用场景
- math:几何计算(面积/体积)、三角函数、对数运算。
- statistics:考试成绩分析、数据报表、科学实验数据处理。
- decimal:电商价格计算、财务报表、税率计算。
- fractions:食谱配方、工程比例、教育类应用。
❓ 常见问题
A 内置函数处理基本操作(绝对值、四舍五入、求和),
math 提供更专业的数学函数(三角函数、对数、阶乘)。能用内置函数解决的就不用 math。Q
statistics 模块的 mean() 和手动算平均有什么区别?A
mean() 内部做了优化(一次遍历同时求和和计数),比 sum(data) / len(data) 性能更好(大数据量时),也应该处理了空列表和特殊值。Q 什么时候用
Fraction 而不是 Decimal?A 需要精确的有理数运算时用
Fraction(如教育软件中的分数练习题)。需要精度可控的十进制计算时用 Decimal(如金融计算)。简单场景 float 就够了——99% 的日常编程用不到这两个模块。📖 小节
math:ceil()/floor()取整、sqrt()平方根、pi/e常量、三角函数statistics:mean()平均、median()中位数、stdev()标准差Decimal:精确十进制,适合金融计算,从字符串创建(Decimal("0.1"))Fraction:精确分数运算,自动约分
📝 作业
-
基础题(难度⭐):用
math模块计算半径为 7 的圆的面积和周长。 -
进阶题(难度⭐⭐):给定一组数据
data = [23, 45, 67, 12, 34, 56, 78, 90, 11, 43],用statistics模块计算平均、中位数、标准差,然后用math判断每个数据是否在"平均数 ± 标准差"的范围内。 -
挑战题(难度⭐⭐⭐):写一个"购物车结算"程序。商品有名称、单价(
Decimal)、数量。用户添加商品后,计算总价、税费(8%)、折扣(满100减10),输出最终应付金额。要求:所有金额用Decimal计算。