← Python 学习路线(共 8 章)

第 5 章 模块、包与标准库

red wenzi · 2026-09-15 · 编程语言 · Python · 📖 预计阅读 8 分钟 · 共 2 道练习
🎯 本章你会学到:import 的三种形式、__main__ 的作用,以及一批常用标准库。建议边读边敲,每节练习先自己做,再展开答案对照。

Python 的“自带电池”是它最大的优势之一:不用装任何东西,就能处理 JSON、CSV、时间、随机数、统计、压缩包。这一章把最常用的几个过一遍。

模块与 __main__

模块与被导入的区别
# 只有直接运行本文件时才执行,被 import 时不执行
def add(a, b):
    return a + b

if __name__ == "__main__":
    print(add(2, 3))
    print("run as script")
运行结果
5
run as script

常用标准库

json / random / statistics / Counter
import json
import random
import statistics
from collections import Counter

data = {"name": "Ann", "score": 90}
text = json.dumps(data, ensure_ascii=False)
print(text)
print(json.loads(text)["score"])

random.seed(42)
print(random.randint(1, 6), random.choice(["a", "b", "c"]))

nums = [3, 1, 4, 1, 5]
print(statistics.mean(nums), statistics.median(nums))
print(Counter("banana").most_common(2))
运行结果
{"name": "Ann", "score": 90}
90
6 a
2.8 3
[('a', 3), ('n', 2)]
模块干什么典型用法
json读写 JSONjson.dumps / json.loads
csv读写表格文本csv.DictReader / DictWriter
statistics统计量mean / median / stdev
collections专用容器Counter / defaultdict / deque
random随机数random.seed / choice / randint
pathlib路径操作Path("data").read_text()
datetime日期时间datetime.now / timedelta
⚠️ 易错点 自己写的文件名不要叫 random.pyjson.pycsv.py——会遮蔽标准库,import 进来的是你自己的文件。
⚠️ 易错点 from x import * 会污染命名空间、覆盖同名变量,正式代码里不要用。

✍️ 本节练习

5.1必做平均值与中位数

读入 n 个整数,输出平均值和中位数,都保留 2 位小数。

输入 第一行 n;第二行 n 个整数。

输出 两行:mean=median=

样例输入
6
1 2 3 4 5 6
样例输出
mean=3.50
median=3.50

💡 提示 用 statistics.meanstatistics.median

✅ 查看参考答案与解析
import statistics

n = int(input())
nums = list(map(int, input().split()))
print(f"mean={statistics.mean(nums):.2f}")
print(f"median={statistics.median(nums):.2f}")

解析 statistics.mean 对整数列表返回分数或浮点,格式化时会自动处理;中位数在偶数个元素时取中间两个的平均。

5.2挑战字符频率 Top-3

读入一个字符串,输出出现次数最多的 3 个字符及次数(按次数降序、同次数按字符升序)。

输入 一行字符串。

输出 最多三行:字符 次数

样例输入
banana
样例输出
a 3
n 2
b 1

💡 提示 Counter(text) 直接统计字符频次。

✅ 查看参考答案与解析
from collections import Counter

text = input()
counter = Counter(text)
for ch, cnt in sorted(counter.items(), key=lambda kv: (-kv[1], kv[0]))[:3]:
    print(f"{ch} {cnt}")

解析 Counterdict 的子类,支持 .items()most_common();这里用排序是为了保证同次数时的字典序。

📚 本文概念都在知识大全:

Python · pip 与虚拟环境 · 列表/字典/集合 · 推导式 · f-string · 异常处理 · dataclass · pandas · 模块与包