00 / RHYTHM三周的固定节拍
和第一课同一个鼓点
工具在换,节拍不变——学生第二周起就知道每节课会发生什么,安全感就是效率。
0–10 分钟
复盘 + 发枪。投上周大屏,表扬两个提交;发本周工具,只讲「它是干嘛的」,不讲语法。
10–25 分钟
跑通 + 改 3 处。先原样跑一遍,再按改处表动手。通关者去帮同桌。
25–35 分钟
炸一次。教师按「炸点预告」现场炸,全班走三步口诀;然后学生自己炸自己修。
35–45 分钟
提交上屏。提交到 class_answers;大屏滚动本周通关名单。
TOOL 1 · 第 2 周文件与循环
批量重命名
目标一句话:一键给文件夹里所有 .jpg 加前缀「旅行_」。第一次操作真实文件——用文件夹不用系统盘。
import os folder = "photos" # ① 改文件夹名 for name in os.listdir(folder): if name.endswith(".jpg"): # ③ 改扩展名 new = "旅行_" + name # ② 改前缀 os.rename(os.path.join(folder, name), os.path.join(folder, new)) print("已改名:", name, "→", new) print("完成,共处理", len(os.listdir(folder)), "个文件")
| 处 | 原值 | 学生改成 | 这一处考什么 |
|---|---|---|---|
| ① | "photos" | 自己的文件夹名 | 字符串字面量 + 相对路径 |
| ② | "旅行_" | 任意前缀 | 字符串拼接 |
| ③ | ".jpg" | ".png" 等 | 条件判断 endswith |
✓通关标准:5 张图片全部带新前缀,且原文件名保留在新名里。
⚠炸点预告:文件夹名写错 → FileNotFoundError(练习集 E7 同款);先 print 再 rename 是这个工具教的职业习惯。
TOOL 2 · 第 3 周字符串与字典
字频统计
目标:统计一句话里出现最多的 5 个字。字典的 get 套路第一次出场——它是 pandas value_counts 的手写版,第 7 周会再见。
text = "数据不会说谎,但会被说谎。" # ① 改文本 counts = {} for ch in text: if ch in ",。!?;:、 ": # ② 改要跳过的字符 continue counts[ch] = counts.get(ch, 0) + 1 top = sorted(counts.items(), key=lambda x: -x[1]) for ch, n in top[:5]: # ③ 改前几名 print(ch, n)
| 处 | 原值 | 学生改成 | 这一处考什么 |
|---|---|---|---|
| ① | "数据不会说谎…" | 任意一句中文 | 字符串即序列,可逐字遍历 |
| ② | ",。!?…" | 要跳过的标点集合 | in 判断 + continue |
| ③ | top[:5] | top[:3] 等 | 切片——顺带看到负数排序技巧 |
✓通关标准:打印出现最多的 5 个字并附次数;把文本换成自己的签名档再跑一次。
⚠炸点预告:top[:0] → 什么都不输出也不报错——逻辑病的初见(练习集 E8 同族)。
TOOL 3 · 第 4 周random 与嵌套循环
密码生成器
目标:一次生成 5 个 8 位密码。嵌套循环第一次出现——外层管「几个」,内层管「多长」。
import random chars = "abcdefghjkmnpqrstuvwxyz23456789" # ① 改字符池 length = 8 # ② 改长度 for i in range(5): # ③ 改生成几个 pwd = "" for j in range(length): pwd += random.choice(chars) print("密码", i + 1, ":", pwd)
| 处 | 原值 | 学生改成 | 这一处考什么 |
|---|---|---|---|
| ① | "abcdefghjkmnpq…" | 自己的字符池 | 为什么池里没有 l / 1 / o / 0(易混淆) |
| ② | 8 | 6–16 任选 | 长度与安全性的直觉 |
| ③ | 5 | 任意个数 | 外层循环管「几个」 |
✓通关标准:生成 5 个密码,目测无易混淆字符;给同桌的账号生成一个。
⚠炸点预告:length 改成 0 → 输出空密码也不报错——又是一颗逻辑雷。彩蛋:教学用 random 可以,真密码要用 secrets 模块,先埋伏笔不讲透。
NEXT第 5 周 · 交棒
工具线毕业,数据线接棒
三件小工具攒下的手感,第 5 周全部用到爬虫与 pandas 上:文件读写来自 TOOL 1,统计套路来自 TOOL 2,批量生成来自 TOOL 3。
01不变的规矩:每课一个能跑的产物、通关者帮扶、全部提交 class_answers——与 PAPER 02 完全同构。
02交接仪式:第 5 周第一件事,全班用 TOOL 2 统计自己爬回的第一段网页文本——两条线当场汇合。
「小工具不是玩具,是给第 5 周的爬虫练的手感。」
—— 学生在第 2–4 周攒下的每一行改过的代码,都会在数据线里再见到一次。