Python3 一些实用的模块

本文中交替出现 Python 的编译模式和交互模式代码块,为便于区分,带有 >>> 的 Python 代码块为交互模式,其余 Python 代码块为编译模式。

掌握一些实用的库

学会使用一些库,可以避免理论计算,直接得出答案。这里举两个例子:

例子1:lcm gcd

要求计算两个数ab的最大公约数、最小公倍数。

这里底层是使用欧几里得的辗转相除法,不断递归实现的,大二的数据结构和算法会讲解。但是主播说了大一考语法,所以可以直接

1
2
3
4
5
6
7
8
9
10
import math

# 计算最大公约数
gcd_value = math.gcd(24, 36)# 结果:12

# 计算最小公倍数(需自定义函数)
lcm_value = math.lcm(24, 36)# 结果:72

print(f"最大公约数: {gcd_value}")
print(f"最小公倍数: {lcm_value}")

从而避免了如下抽象难以理解的底层算法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
def gcd(a, b):
"""使用欧几里得算法计算最大公约数"""
while b != 0:
a, b = b, a % b
return a

def lcm(a, b):
"""基于GCD计算最小公倍数"""
if a == 0 or b == 0:
return 0
return abs(a * b) // gcd(a, b)

# 示例使用
num1 = 24
num2 = 36
print(f"最大公约数: {gcd(num1, num2)}") # 输出: 12
print(f"最小公倍数: {lcm(num1, num2)}") # 输出: 72

所以大一学python语法暂时不需要理解,会使用即可,想学算法的可以私下下功夫。

例子2:计算闰年

在 Python 中,计算闰年可以使用标准库中的 calendar.isleap() 函数,或者通过自定义算法实现。

1
2
3
4
5
6
import calendar

year = 2024
is_leap = calendar.isleap(year) # True 或 False

print(f"{year} 是闰年吗?{is_leap}") # 输出: 2024 是闰年吗?True

可以避免写繁琐的如下代码:

闰年判断规则:

  • 年份能被 4 整除;
  • 但如果年份能被 100 整除,则不是闰年;
  • 然而,如果年份能被 400 整除,则仍是闰年
1
2
3
4
5
6
7
8
9
10
11
12
13
14
def is_leap_year(year):
"""判断给定年份是否为闰年"""
if year % 4 != 0:
return False
elif year % 100 != 0:
return True
elif year % 400 != 0:
return False
else:
return True

# 示例使用
year = 2024
print(f"{year} 是闰年吗?{is_leap_year(year)}") # 输出: 2024 是闰年吗?True

所以不需要理解闰年是什么,只需要会使用calendar.isleap()方法即可。是不是省去了很多麻烦?

如何掌握更多的库?

屏幕前可爱的你可能要问了,“主播主播,我不知道这些巧妙的库怎么办呢?🥺🥺🥺img?”

别慌,授人以鱼不如授人以渔:

  1. 打卡豆包
  2. 输入:举出一些方便的库,比如判断质数的库什么的,你将会得到完美的解答。:image-20250519223947097

注意

在编写 Python 程序时,合理使用标准库(内置库)和第三方库(外部库)可以极大地提升开发效率。但需要特别注意以下几点,尤其是在断网考试或评测环境中

Python 的库分为两类

  • 内置库(标准库):安装 Python 时自带,无需额外安装,可以直接导入使用。
  • 外部库(第三方库):需要通过 pip install <module_name> 命令进行安装,考试环境通常无法联网安装,因此无法使用

考试环境常见误区:

  • 很多同学习惯在平时使用 sympynumpypandas 等强大库,但这些库默认并不包含在 Python 安装包中。
  • 在断网的考试环境下,如果代码中 import sympy 或其他外部库,将会导致运行时报错:ModuleNotFoundError: No module named 'sympy'
  • 尤其是 CTF、蓝桥杯、期末考试、机试中,避免使用非标准库是基本原则!

解决方案:

  • 学会使用 功能强大的标准库 处理大部分常见任务,比如数学计算、文件操作、时间处理、随机数生成、数据统计等。
  • 对于需要外部库才能完成的任务,要学会用纯 Python 或标准库手动实现替代算法。
  • 如果你特别依赖某个外部库的功能,可以事先查阅其底层原理,在考试中手动实现核心部分(比如素因数分解、判素数、排列组合等)。

建议学习以下几个常用标准库

  • math:数学函数(阶乘、排列组合、对数、三角函数等)
  • datetime:时间与日期操作
  • statistics:均值、方差等统计函数
  • itertools:排列、组合、累积等高级迭代工具
  • random:生成随机数、抽样
  • os.path / pathlib:处理路径与文件结构
  • collections:高效的数据结构(如 dequeCounterdefaultdict

标准库

1️⃣ 阶乘计算(math.factorial

用于计算 n!(即 1×2×…×n)。相比递归或循环,调用函数更高效且无栈溢出风险。

1
2
3
4
5
import math

print(math.factorial(5)) # 120
print(math.factorial(0)) # 1(定义上 0! = 1)
print(math.factorial(10)) # 3628800

2️⃣ 排列与组合(math.perm, math.comb

用于计算从 n 个元素中选出 k 个元素的排列数和组合数:

  • 排列:顺序有关 P(n, k) = n! / (n-k)!
  • 组合:顺序无关 C(n, k) = n! / (k!(n-k)!)
1
2
3
4
5
6
7
import math

print(math.perm(5, 2)) # 20 = 5×4
print(math.comb(5, 2)) # 10 = 5×4 / 2

print(math.perm(7, 3)) # 210 = 7×6×5
print(math.comb(7, 3)) # 35 = 7×6×5 / (3×2×1)

3️⃣ 数学计算与函数(math 模块)

包括三角函数、对数、指数、常数等,避免重复造轮子。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import math

# 三角函数(单位:弧度)
print(math.sin(math.pi / 2)) # 1.0
print(math.cos(math.pi)) # -1.0

# 对数与指数
print(math.log(100, 10)) # 2.0(以10为底)
print(math.log2(8)) # 3.0(以2为底)
print(math.exp(1)) # 自然对数e的幂 ≈ 2.718

# 常量
print(math.pi) # 3.141592653...
print(math.e) # 2.718281828...

4️⃣ 日期与时间处理(datetime

轻松完成日期差、星期判断、格式转换等任务。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from datetime import date, datetime, timedelta

# 日期差
d1 = date(2024, 1, 1)
d2 = date(2024, 12, 31)
print((d2 - d1).days) # 365(闰年)

# 判断星期几(0=周一,6=周日)
print(d1.weekday()) # 0 -> 星期一

# 获取当前时间
now = datetime.now()
print(now.strftime("%Y-%m-%d %H:%M:%S"))

# 日期加减
print(d1 + timedelta(days=30)) # 2024-01-31

常见用途:倒计时、日历工具、考试周计算、工期估算等。


5️⃣ 统计计算(statistics

直接进行常见统计分析,适用于考试题或数据分析初步。

1
2
3
4
5
6
7
8
9
import statistics

data = [1, 2, 2, 3, 4, 5, 6]

print(statistics.mean(data)) # 平均数:3.2857...
print(statistics.median(data)) # 中位数:3
print(statistics.mode(data)) # 众数:2
print(statistics.stdev(data)) # 标准差
print(statistics.variance(data))# 方差

📌 典型应用:成绩分析、概率期望、竞赛数据处理。


第三方库

考试环境若为断网,请避免使用下列外部库!

1️⃣ 判断质数(sympy.isprime

判断一个数是否为质数,适用于大数判断,无需编写复杂算法。

1
2
3
4
5
from sympy import isprime

print(isprime(29)) # True
print(isprime(1234567891)) # True
print(isprime(1001)) # False

📌 原理:底层采用 Miller-Rabin 等快速算法。


2️⃣ 生成质数列表(sympy.primerange

快速获取一段范围内所有质数。

1
2
3
4
from sympy import primerange

print(list(primerange(1, 20))) # [2, 3, 5, 7, 11, 13, 17, 19]
print(list(primerange(100, 121))) # [101, 103, 107, 109, 113]

📌 用途:编程题筛选质数、构造题干数据、密码学入门等。


3️⃣ 素因数分解(sympy.factorint

自动将整数分解成素因子及其幂次。

1
2
3
4
from sympy import factorint

print(factorint(60)) # {2: 2, 3: 1, 5: 1} → 60 = 2²×3×5
print(factorint(101)) # {101: 1}(本身为质数)

📌 实战用途:最大公约数求法优化、分数约分、欧拉函数等数学题。


✅ 小结

功能 推荐库 是否内置
阶乘、排列组合 math
对数、三角函数 math
时间与日期计算 datetime
均值/方差 statistics
随机抽样 random
文件路径 os.path / pathlib
判断质数 sympy
素因数分解 sympy
生成质数表 sympy

✅ 建议熟练掌握标准库,提高代码效率
❌ 第三方库如 sympy,虽强大但需联网安装,考试断网环境慎用!


屏幕前的你需要对他们进行记忆,再进行运用,必然能有所大成。

学会使用这些库可以大幅提升编程效率,尤其是在处理数学、日期、统计等常见任务时。对于大一学生来说,先掌握库的用法,再深入理解底层算法,是更高效的学习路径! ——豆包