🎯 本章你会学到: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
import json:用json.dumps(...)调用。from collections import Counter:直接用Counter(...)。import numpy as np:起别名,社区惯例。if __name__ == "__main__"::让文件既能当脚本跑、又能被 import 复用。
常用标准库
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 | 读写 JSON | json.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.py、json.py、csv.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.mean 和 statistics.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}")解析 Counter 是 dict 的子类,支持 .items() 和 most_common();这里用排序是为了保证同次数时的字典序。