← 首页
00:00点开始
学情 用时 0′ 尝试 0 出错 0 归因 0
B 结构期 · 第八课
两种循环,什么时候用哪个

到今天我们有两张循环:for 和 while。
它们能画一样的东西,但该用哪个有讲究——今天把这件事收口。

开场 9 分钟怎么花: 回扣课22"停不下来"(3′)→ 抛"那到底什么时候用 for"(3′)→ 发手帖 + 预告作品《两条路》(3′)。
老师说 一句话记:次数知道 → for;次数算不出来 → while。
今天一幅画里两条路都用上:外面一圈用 for,里面一段用 while。
第二十三种陷阱:在 for 里改 i 想提前跳出。 for i in range(8) 的 i 是每圈重新发一个的, 你在循环里把 i 改成 8,下一圈它照样变成 4、5、6……一点用都没有。

第一步 · 改不动的陷阱 09′–23′ · 14 分钟 · 我明明改了 i

陷阱换了(第二十三种)
在 for 里改 i,以为能提前结束
老师说 这段代码想画 4 段就收工:i 到 3 的时候把 i 改成 8,应该就跳出去了吧?
先猜:它到底画几段?猜完运行。

盯住 for i in range(8):每圈开头 i 都会被重新发一个值。
你改的那个 8 只管到这一圈结束——下一圈它照旧是 5。

老师纪律:别直接说"for 的 i 改不了"。只问: 「第 5 圈开始时,i 是几?谁发给它的?」——他会自己发现每圈都重置。

第二步 · 判断表 23′–37′ · 14 分钟 · 三问决定用哪个

老师说 选循环只问三句:
① 次数说得出来吗?说得出来 → for。
② 停下来的条件写得出来吗?写得出来 → while。
③ 谁在改那个变量?while 里必须自己改;for 里千万别改 i。
这一段
for 边框
长度
160
累计
0
为什么坚持手推:两种循环混在一段代码里, 学生最容易搞混"这一段是谁画的"。把每段的长度和出处写死,图形就不再是黑箱。
休息 1
37′–47′ · 10 分钟 · 站起来动一动
老师说 留个问题:如果把 while 那段的上限从 80 改成 200,会多几段?
回来验证。

第三步 · 人肉电脑 47′–65′ · 18 分钟 · 不许按运行

老师说 关掉运行。标准骨架一共 8 段:前 4 段是 for 画的,后 4 段是 while 画的。
在纸上写:这一段多长?它归哪个循环管?
标准骨架:for i in range(4): forward(160); left(90), 然后 n = 10; while n <= 80: forward(n); left(90); n = n * 2。
人肉电脑的落点:学生要能说出「第 5 段开始换循环了, 长度变成 10」——说不出这句,就是没看懂两段代码怎么接上。

第四步 · 自己搭 65′–85′ · 20 分钟 · 画你自己的两条路

老师说 写一幅"两条路":for 画个外框,while 在里面画一段递增。
要求三条:① 有 for ② 有 while 且循环里更新变量 ③ 不在 for 里改 i
巡场只问三句:外框是哪个循环画的?里面那段呢? 哪个循环改了自己的变量?
休息 2
85′–91′ · 6 分钟 · 伸个懒腰
老师说 回来只改一个数:while 的上限 80 改成 160,看多几段。

第五步 · 改数试试 91′–105′ · 14 分钟 · 改上限,段数怎么变

老师说 只改一个数:while n <= 80 里的 80 改成 160。
先猜多几段,再运行。
这一步的收获:上限改一倍,while 那边就多一段。 for 那 4 段一根头发都没动——这就是"次数固定"和"条件驱动"的差别。

第六步 · 读码迁移 105′–120′ · 15 分钟 · 读出它画几段

老师说 最后 15 分钟不写新代码——读。这段也是两条路,说出它一共画几段。
读码四步:① 有几个循环 → ② 各管哪几段 → ③ 每段的长度/角度 → ④ 一共几段。
  • 填手帖:本课三问——次数知道吗 / 停的条件写得出吗 / 谁在改变量
  • 家庭挑战:把《两条路》讲给爸妈听,说清 for 和 while 各自管哪一段
收尾话术(家长版): 「他今天学的是怎么选——不是多学一种循环,是知道什么时候该用哪种。 您可以问他:次数算不出来的时候用哪个?他说得清,就是真懂。」

海龟的画布

(摆好卡片,按运行)

对应的 Python 代码 实时同步

本课硬事实 老师自查