学生识开档,但一问“为何用字典不用两个列表”就静了。这一堂用五个学生的分数档,把键值查找、逐行读档与统计一次串起来,并用字数统计说明字典为何是查找的首选。
本堂目标 学生能够:①把五行“姓名,分数”读入字典,算出平均 66.4 分、最高 91 分(Cara)、最低 45 分;②计出及格率 80 百分比,并讲出逐行读档时何时用 strip 与 split;③用字典做字频统计,讲出同一句六个字之中 to 与 be 各出现两次,并解释字典查找为何比逐个列表搜寻快。
01 先备知识(开课前 3 分钟快检)
以下任何一项未过关,本堂就会卡住,先补该项:
| 技能 |
快检题 |
过关标准 |
| 基本输入输出 |
print 与 input 的分别是什么? |
一个输出、一个等输入 |
| 列表 |
列表用哪个括号? |
方括号,索引由零开始 |
| 循环 |
for 循环逐个取元素,用什么语句? |
for 变数 in 列表 |
02 课堂流程(45 分钟)
| 时间 |
环节 |
导师做什么 |
学生做什么 |
| 0–5 分钟 |
先备快检 |
抽问三条先备题,把字典写法写在黑板上 |
口头答,错的抄一次 |
| 5–17 分钟 |
第一幕:键值取代两个列表 |
用五个姓名与分数建立字典,求平均 66.4 |
跟做一次,自己加一个学生 |
| 17–30 分钟 |
第二幕:逐行读档 |
读六行档,跳过标题行,得 46 字节 |
自己写读档三行,印出每行 |
| 30–40 分钟 |
第三幕:统计与例外 |
计及格率 80 百分比,处理档案不存在 |
自己改成 try 版本 |
| 40–43 分钟 |
一句总结 |
要学生讲出字典在查找上的优势 |
口头答,导师只纠正用词 |
| 43–45 分钟 |
离场检查 |
派三条问题,收回点错处 |
独立完成,不翻书 |
03 讲解脚本(照着说就可以)
第一幕:第一幕:一个键换一个值,不用记位置
两个平行列表要记住姓名在第几个、分数在第几个,一插入就全乱;字典用姓名做键,直接取分数。
5 个学生总分 332,平均 66.4;最高 Cara 的 91 分,最低 Dan 的 45 分,用 max 与 min 加 key 参数即可。
查找次数的分别:平行列表最坏要逐个比 5 次,字典平均 1 次,因为键会经杂凑直接定位。
一句记法:要按名字找东西,用字典;要按次序处理,用列表。
要求学生复述:字典靠键定位,不靠位置。
第二幕:第二幕:档案是一行一行字串
open 之后,每一行都是字串,连换行符都仍在,所以先 strip 再 split。
六行档案第一行是标题 name,mark,要跳过或用 next 读走;剩 5 行资料,每行拆成姓名与分数两格。
这个小档案共 46 字节,等于每行字数加一个换行符;档案大小的算法在考卷常以字节为单位问。
最重要一句:用 with open 开档,离开区块自动关档,不会忘记 close。
要求学生复述:每行是字串、先 strip、用 with 开档。
第三幕:第三幕:统计与出错都是资料的一部分
及格线 50 分,用条件式数一数,5 人中有 4 人及格,即 80 百分比。
字频统计同理:把句子 split 成 6 个字,逐个用 get 累加,to 与 be 各 2 次,其余各 1 次,字典共 4 个键。
真实档案会缺字段或不是数字,所以要用 try 包住转换,并在 except 记录行号,而不是让程式整个停。
答题要写出“检查、转换、统计、输出”四步,阅卷员看的是步骤而不是美观。
要求学生复述:先检查再转换,错的行要记录不要静静跳过。
04 必教题型与步骤
| 题型 |
例子 |
步骤 |
答案 |
| 建立字典 |
5 个姓名与分数 |
逐对写入,或由两个列表 zip |
字典有 5 个键 |
| 逐行读档 |
六行文字档,首行标题 |
with open、strip、split、跳标题 |
读到 5 笔资料 |
| 统计计算 |
分数清单 |
sum 除个数得平均,条件计数得及格率 |
平均 66.4,及格率 80 百分比 |
| 例外处理 |
档案不存在或字段不是数字 |
try except 包住 open 与 int |
程式继续,并印出行号 |
合理性检查(一定要教):三个回读:①平均 66.4 一定在最低 45 与最高 91 之间,超出就是加错人;②及格率不可能大于一百,4 除 5 得 80 百分比;③字频统计的键数 4 一定少于字数 6,若相等就代表每个字只出现一次或计法有误。
05 独立练习三题
| 题目 |
答案 |
想观察什么 |
| 五个分数 60、70、80、90、100,平均多少? |
80 |
看有无除错个数 |
| 文字档有七行,首行标题,资料有几笔? |
6 笔 |
看有无跳过标题 |
| 字典查找为何比列表快? |
用键经杂凑直接定位,不用逐个比较 |
看有无讲出键而不是位置 |
06 学生常见错误与纠正句
| 错误 |
学生通常这样写 |
导师这样说 |
| 忘记 strip |
分数格变成 ’72\n’,int 转换失败 |
每行先 strip 再 split,换行符不是资料。 |
| 列表与字典混淆 |
用索引取姓名,插入一笔就全错位 |
要用名字找,就用字典做键。 |
| 平均除错个数 |
总分 332 除 6 得 55.3 |
资料只有 5 笔,标题行不是学生。 |
| 例外当成错误 |
程式一遇坏行就停 |
用 try except 记录行号,其余继续处理。 |
07 家课建议(直接指到练习卷题号)
08 离场检查(最后 5 分钟)
| 题目 |
答案 |
判定 |
| 5 个学生的总分是 332,平均多少 |
66.4 分 |
错:除以 6 |
| 读档时为何要先 strip |
去掉行尾换行符,否则转数字失败 |
错:答成为了美观 |
| 字典查找靠什么定位 |
键,经杂凑直接找 |
错:答成靠索引次序 |
09 导师常问
这一章适合哪一年级?
中四 ICT 程式部分,中五重温选修单元时可作起点。
45 分钟够不够讲读档与例外?
够,因为两者用同一个小档案示范,只写一次完整程式。
有无配套练习?
本章练习三题,答案在页内;家课接 Python 程式设计入门那章。
立即免费找导师导师登记 →
本页为 TutorZone 导师备课指引,内容由 TutorZone 团队编写;题目与流程为原创,并非任何学校或出版社的教材。