学生看得明程式,但一叫他讲“跑到第五次之后变几多”就停手。这一堂要他们用追踪表,把循环逐次写出来,再由表上找错。
本堂目标 学生能够:① 用追踪表逐步写出 for 循环每次的变数值;② 判断 while 循环会跑几次、何时终止;③ 用“输入、处理、输出”三段定位三类常见错误。
01 先备知识(开课前 3 分钟快检)
以下任何一项未过关,本堂就会卡住,先补该项:
| 技能 |
快检题 |
过关标准 |
| 变数 |
x = 3 之后 x = 5,x 是几多 |
5,旧值被盖 |
| 平方 |
4 的平方 |
16 |
| 比较运算 |
n < 100 何时为假 |
n 大于或等于 100 时 |
02 课堂流程(60 分钟)
| 时间 |
环节 |
导师做什么 |
学生做什么 |
| 0–8 分 |
追踪表格式 |
字段:次数、i、变数、判断 |
画出空表 |
| 8–24 分 |
for 循环追踪 |
range(1,6) 由 1 到 5,逐次加平方 |
得出总和 55 |
| 24–36 分 |
while 循环 |
由 3 开始倍增,写终止条件 |
6 次后得 192 |
| 36–48 分 |
除错三段 |
输入、处理、输出各放一个错 |
逐段检查 |
| 48–56 分 |
改错实作 |
把错的循环改成正确 |
跑一次口头执行 |
| 56–60 分 |
离场检查 |
三题收回即批 |
独立完成 |
03 讲解脚本(照着说就可以)
第一幕:for 循环:追踪表比脑算可靠
t = 0,for i in range(1, 6): t = t + i*i。range(1,6) 只到 5,所以跑 5 次:1+4+9+16+25 = 55。追踪表每次写三个值:i、i*i、t。
常见问法:“跑到第三次之后 t 是几多?”查表第三行=14,不需要心里模拟整个程式。
要学生复述:range(1,6) 不包括 6,跑 5 次。
第二幕:while 循环:先问“几时停”
n = 3,while n < 100: n = n * 2。每次先判断再乘:3→6→12→24→48→96→192。96 仍然小于 100,所以再乘一次得 192,之后判断为假才停,共 6 次。
最常见误解:以为 96 就停。条件是“小于 100”,96 仍然符合,要跑到 192。
要学生复述:while 是每次进入前先判断,不是跑完才判断。
第三幕:除错:先分三段,再逐段印出来
输入段错:读错型别(字串当数字加)。处理段错:范围错(range(1,6) 当成 1 到 6)、累加变数未初始化。输出段错:印了中间值而非结果。
三步做法:① 讲出预期输出;② 在循环内印出变数;③ 对比追踪表找第一个不符的次数,错一定在那一行。
要学生复述:找第一个与追踪表不符的次数,错就在那一行。
04 必教题型与步骤
| 题型 |
例子 |
步骤 |
答案 |
| 追踪题 |
for 循环第 3 次后 t 的值 |
画表逐次代入 |
14(1+4+9) |
| 次数题 |
n=3 倍增到超过 100 要几次 |
每次先判断 |
6 次,结果 192 |
| 除错题 |
程式输出比预期少一次 |
查 range 上界 |
range 不含上界 |
| 改写题 |
把 while 改成 for |
定次数用 for |
for k in range(6) |
合理性检查(一定要教):平方和 1 至 5 应为 55;若得 91 就是加到 6 的平方。倍增 6 次后是 192,若答 96 就是漏了最后一次判断。
05 独立练习三题
| 题目 |
答案 |
想观察什么 |
| 1 至 5 的平方和 |
55 |
有无包 6 |
| 3 倍增到不小于 100 的最后值 |
192 |
有无在 96 停手 |
| 1 至 20 有几个 3 的倍数 |
6 个 |
有无数漏 18 |
06 学生常见错误与纠正句
| 错误 |
学生通常这样写 |
导师这样说 |
| range 上界当包括 |
以为 range(1,6) 加到 6 |
“range 个尾不包,跑到 5 就停。” |
| while 提早停 |
96 就当完成 |
“96 仍然细过 100,要再乘一次。” |
| 累加器未归零 |
t 由上一题的旧值开始 |
“每次新计之前,t 要重新设做 0。” |
| 只印结果不印中间值 |
除错时直接改数字 |
“先印中间值,看边一次开始不对。” |
07 家课建议(直接指到练习卷题号)
08 离场检查(最后 5 分钟)
| 题目 |
答案 |
判定 |
| 1 至 5 平方和 |
55 |
三题全对=可进阵列 |
| 3 倍增的执行次数 |
6 次 |
错一题=下堂重讲 while 判断次序 |
| range(1,6) 跑几次 |
5 次 |
错两题以上=回到第一幕 |
09 导师常问
一定要用 Python 吗?
DSE 卷面用伪代码,但用 Python 练追踪最快,概念一样。
追踪表要写几多行?
写到能回答问题为止,通常 5 至 6 行已够。
无限循环怎答?
指出缺少更新变数或条件永远为真,并写出修正那一行。
立即免费找导师导师登记 →
本页为 TutorZone 导师备课指引,内容由 TutorZone 团队编写;题目与流程为原创,并非任何学校或出版社的教材。