学生看示范个个明白,自己一写就漏冒号、漏缩排、把 = 当成比较。这一堂只练三件事:变数要追踪、选择要守条件、循环要数清次数,最后用 1 至 100 之和 5050 这条题目把三者串起来。
本堂目标 学生能够:① 写出 for 循环累加 1 至 100 得 5050,并用 n(n+1)/2 验算;② 用 if / elif 为 [45, 52, 68, 39, 71] 判等级并数出 3 个及格;③ 算出平均值 55.0;④ 讲出 range(3) 得 0、1、2 而非 1、2、3,并解释缩排决定循环范围。
01 先备知识(开课前 3 分钟快检)
以下任何一项未过关,本堂就会卡住,先补该项:
| 技能 |
快检题 |
过关标准 |
| 变数 |
x = 5 之后 x = x + 1,x 是多少? |
6 |
| 比较运算 |
== 与 = 有什么分别? |
一个比较,一个赋值 |
| 整数除法 |
7 // 2 是多少? |
3 |
| 输出 |
print(3 + 4) 会显示什么? |
7 |
02 课堂流程(60 分钟)
| 时间 |
环节 |
导师做什么 |
学生做什么 |
| 0–8 分 |
开场 |
问:点样叫电脑加 1 到 100? |
讲出逐个加与公式两条路 |
| 8–20 分 |
变数与顺序 |
累加器 total = 0 开始 |
自己写出三行累加 |
| 20–32 分 |
选择结构 |
用 if / elif 判等级 |
自己补上所有冒号 |
| 32–44 分 |
循环 |
for 与 range 的边界 |
自己讲出 range(1,101) 的原因 |
| 44–52 分 |
函数与除错 |
把平均写成函数 |
自己找出缩排错 |
| 52–60 分 |
独立练习 |
三题限时 8 分钟 |
做完对答案并标错因 |
03 讲解脚本(照着说就可以)
第一幕:先追一次变数,再写第二行
累加器一定要先设 total = 0,然后在循环内 total = total + i。学生最容易漏掉初始化,于是出现 NameError,或者把初始化写进循环令答案永远等于最后一个数。教法:每一轮要学生在纸上写出 i、total 两个格,跑三次才准打键盘。这个习惯一建立,之后所有累加、计数、找最大值都用同一招。
要学生在纸上追三次循环,写出 i 与 total 的每一轮数值。
第二幕:range 的右边界不入数,缩排决定谁在循环内
range(1, 101) 才包含 100,写 range(1, 100) 只得 4950。缩排则是第二把刀:缩排一次在循环内,不缩排在循环后。学生写完总会问“为何总和只得最后一个数”,答案永远是缩排位置。示范时故意把 print 拉出循环再拉回去,让学生看输出变化,比讲十次规则有效。
要学生讲出 range(1, 100) 的总和是多少,并解释为何不是 5050。
第三幕:用公式验证循环,用测试验证选择
5050 这条题目好在有第二条路:n(n+1)/2 得 5050,两条路答案相同就代表循环写对。选择结构则靠测试案例:45 应为不及格、52 及格、71 良好,三个都对才叫完成。要学生养成一个反射——写完先想“我点知它对”,这一步就是 DSE 卷程式的除错分。
要学生用公式算出 100 的和,并用一个测试案例证明 if 写对。
04 必教题型与步骤
| 题型 |
例子 |
步骤 |
答案 |
| 累加题 |
1 至 100 之和 |
① total = 0 ② for i in range(1,101) ③ total += i |
5050 |
| 选择结构题 |
把分数转等级 |
① 由高到低排条件 ② 每行补冒号 ③ 用测试案例验 |
71 为良好 |
| 计数题 |
数出 [45,52,68,39,71] 几个及格 |
① count = 0 ② if m >= 50 才加 ③ 印出 count |
3 个 |
| 平均值题 |
五个分数的平均 |
① sum 累加 ② 除 len ③ 保留一位小数 |
55.0 |
合理性检查(一定要教):数量级检查:1 至 100 之和一定大于 100 而小于 10000,答 100 代表循环只跑一次,答 4950 代表漏了 100。平均值一定落在最低分 39 与最高分 71 之间,答 275 就是忘记除。次数检查:计数器的值不可能大于列表长度 5,答 6 就是条件写成 > 或把 else 也加了。
05 独立练习三题
| 题目 |
答案 |
想观察什么 |
| 1 至 20 之中所有偶数之和 |
110 |
有无用 x % 2 == 0 筛选 |
| range(3) 会产生哪几个数? |
0、1、2 |
有无以为由 1 开始 |
| [45,52,68,39,71] 之中及格(≥50)人数 |
3 个 |
有无把 50 分算及格 |
06 学生常见错误与纠正句
| 错误 |
学生通常这样写 |
导师这样说 |
| 把 = 当比较 |
“if mark = 50: 就会判断” |
“单等号是赋值,电脑会直接把 50 塞入 mark;要比较就要双等号 ==。” |
| 缩排错位 |
“print(total) 放在循环外面都一样” |
“放外面只印最后一次结果;你原本想看每一轮,就要留在循环内。” |
| range 边界 |
“range(1, 100) 会加到 100” |
“range 右边界不入数,你少了 100 这个数,所以总和是 4950。” |
| 忘记初始化累加器 |
“total = total + i 直接开始” |
“total 未定义就加,电脑不知道由几开始;先写 total = 0,这一格就是你的起点。” |
07 家课建议(直接指到练习卷题号)
08 离场检查(最后 5 分钟)
| 题目 |
答案 |
判定 |
| 1 至 100 之和 |
5050 |
错:漏了 100 得 4950 |
| range(3) 产生的数 |
0、1、2 |
错:以为是 1、2、3 |
| 五个分数 45、52、68、39、71 的平均 |
55.0 |
错:忘记除数目 |
| 及格(≥50)人数 |
3 个 |
错:把 50 当不及格 |
09 导师常问
for 与 while 几时用边个?
次数已知就用 for,次数未知、要靠条件停就用 while;两者都可以互换,但用对会令程式更易读。
为何 Python 用缩排而不是大括号?
缩排本身就是语法,代表程式区块;缩排乱了程式就错,所以编辑器要用固定四个空格,不要混用 tab。
DSE 卷会考哪种语言?
课程要求以伪代码或高阶语言表达逻辑,学校多用 Python;答题时写清楚输入、处理、输出三步就够。
立即免费找导师导师登记 →
本页为 TutorZone 导师备课指引,内容由 TutorZone 团队编写;题目与流程为原创,并非任何学校或出版社的教材。