Python模块:内置模块math数学运算全解
Python模块内置模块math数学运算全解一、开篇Python的数学工具箱math模块是Python最基础的内置模块之一提供了C标准库中定义的数学函数。从三角函数到对数从取整到阶乘它涵盖了日常和科学计算中的大部分需求。⌨️ 导入和使用importmath# math模块提供# - 数学常量pi, e, tau, inf, nan# - 数值运算取整、绝对值、阶乘、组合数# - 幂和对数sqrt, pow, exp, log, log2, log10# - 三角函数sin, cos, tan 及其反函数# - 特殊函数gcd, lcm, erf, gamma# - 角度转换degrees, radians二、数学常量importmath# 圆周率 πprint(fπ {math.pi})# 3.141592653589793print(fπ/2 {math.pi/2})# 1.5707963267948966# 自然常数 eprint(fe {math.e})# 2.718281828459045# 圆的周长与面积r5circumference2*math.pi*r areamath.pi*r**2print(f半径{r}的圆: 周长{circumference:.2f}, 面积{area:.2f})# τ (tau) 2π —— Python 3.6print(fτ {math.tau})# 6.283185307179586# 无穷大和非数字print(f无穷大:{math.inf})# infprint(f负无穷:{-math.inf})# -infprint(f非数字:{math.nan})# nan# 判断特殊值print(math.isinf(math.inf))# Trueprint(math.isnan(math.nan))# Trueprint(math.isfinite(1.0))# Trueprint(math.isfinite(math.inf))# False# 验证计算print(1/math.inf)# 0.0print(math.inf999999999)# Trueprint(math.nanmath.nan)# False! nan不等于任何值包括自己三、数值运算3.1 取整和截断importmath# ceil(x) —— 向上取整往正无穷方向print(fceil(3.2) {math.ceil(3.2)})# 4print(fceil(3.9) {math.ceil(3.9)})# 4print(fceil(-3.2) {math.ceil(-3.2)})# -3# floor(x) —— 向下取整往负无穷方向print(ffloor(3.2) {math.floor(3.2)})# 3print(ffloor(3.9) {math.floor(3.9)})# 3print(ffloor(-3.2) {math.floor(-3.2)})# -4# trunc(x) —— 截断小数部分往0方向print(ftrunc(3.7) {math.trunc(3.7)})# 3print(ftrunc(-3.7) {math.trunc(-3.7)})# -3# ceil vs floor vs trunc vs round 对比x-3.7print(fx{x}: ceil{math.ceil(x)}, floor{math.floor(x)}, ftrunc{math.trunc(x)}, round{round(x)})# x-3.7: ceil-3, floor-4, trunc-3, round-4# fabs(x) —— 绝对值返回floatprint(ffabs(-5.5) {math.fabs(-5.5)})# 5.5# fmod(x, y) —— 浮点数取余不同于%print(ffmod(7.5, 2.0) {math.fmod(7.5,2.0)})# 1.53.2 阶乘和组合数importmath# factorial(n) —— n的阶乘n 0forninrange(6):print(f{n}! {math.factorial(n)})# 0! 1 1! 1 2! 2 3! 6 4! 24 5! 120# comb(n, k) —— 组合数 C(n,k)从n个中选k个print(fC(5,2) {math.comb(5,2)})# 10# 验证C(5,2) 5!/(2!*3!) 120/(2*6) 10# perm(n, k) —— 排列数 P(n,k)从n个中选k个并排序print(fP(5,2) {math.perm(5,2)})# 20# 验证P(5,2) 5*4 20# 实际应用计算中奖概率deflottery_probability(total,choose):从total个号中选choose个全中的概率return1/math.comb(total,choose)print(f双色球红球中奖概率: 1/{math.comb(33,6)})# 双色球红球中奖概率: 1/17721088四、幂和对数importmath# sqrt(x) —— 平方根print(fsqrt(16) {math.sqrt(16)})# 4.0print(fsqrt(2) {math.sqrt(2):.10f})# 1.4142135624# pow(x, y) —— x的y次方print(fpow(2, 10) {math.pow(2,10)})# 1024.0# exp(x) —— e的x次方print(fexp(1) {math.exp(1):.6f})# 2.718282print(fexp(2) {math.exp(2):.6f})# 7.389056# 对数# log(x) —— 自然对数以e为底print(flog(e) {math.log(math.e)})# 1.0# log2(x) —— 以2为底print(flog2(8) {math.log2(8)})# 3.0# log10(x) —— 以10为底print(flog10(1000) {math.log10(1000)})# 3.0# log(x, base) —— 以base为底的对数print(flog(8, 2) {math.log(8,2)})# 3.0print(flog(100, 10) {math.log(100,10)})# 2.0# 实用函数计算信息熵比特defentropy_bits(probabilities):计算以2为底的熵return-sum(p*math.log2(p)forpinprobabilitiesifp0)五、三角函数importmath# 基本三角函数参数是弧度anglemath.pi/4# 45度print(fsin(45°) {math.sin(angle):.6f})# 0.707107print(fcos(45°) {math.cos(angle):.6f})# 0.707107print(ftan(45°) {math.tan(angle):.6f})# 1.000000# 反三角函数x0.5print(fasin(0.5) {math.asin(x):.6f}rad {math.degrees(math.asin(x)):.1f}°)# asin(0.5) 0.523599 rad 30.0°# atan2(y, x) —— 计算角度考虑象限print(fatan2(1, 1) {math.atan2(1,1):.6f}rad)# 45°print(fatan2(1, -1) {math.atan2(1,-1):.6f}rad)# 135°print(fatan2(-1, -1) {math.atan2(-1,-1):.6f}rad)# -135°# 角度弧度转换print(f180° {math.radians(180):.6f}rad)# 3.141593print(fπ rad {math.degrees(math.pi):.1f}°)# 180.0°# 计算两点距离defdistance(x1,y1,x2,y2):计算两点之间的欧几里得距离returnmath.sqrt((x2-x1)**2(y2-y1)**2)print(f距离:{distance(0,0,3,4)})# 5.0六、特殊函数importmath# gcd(a, b) —— 最大公约数print(fgcd(48, 18) {math.gcd(48,18)})# 6print(fgcd(17, 31) {math.gcd(17,31)})# 1互质# lcm(a, b) —— 最小公倍数Python 3.9print(flcm(4, 6) {math.lcm(4,6)})# 12print(flcm(12, 18) {math.lcm(12,18)})# 36# 应用分数化简defsimplify_fraction(num,den):化简分数gmath.gcd(num,den)returnnum//g,den//gprint(f24/36 化简:{simplify_fraction(24,36)})# (2, 3)# 判断是否为完全平方数defis_perfect_square(n):returnn0andmath.isqrt(n)**2nprint(is_perfect_square(25))# Trueprint(is_perfect_square(26))# False# isclose —— 判断两个数是否接近print(math.isclose(0.10.2,0.3))# Trueprint(0.10.20.3)# False! 浮点精度问题七、总结math模块是Python数学运算的基石。掌握它让你能高效处理日常和科学计算。最常用Top 10pi,e,sqrt(),ceil(),floor(),factorial(),gcd(),sin()/cos(),radians()/degrees(),isclose()✅需要三角函数→math需要随机数→random需要日期时间→datetime。math是纯数学不涉及概率或日期。
