← 首页
00:00点开始
学情 用时 0′ 尝试 0 出错 0 归因 0
D 数据期 · 第一课
一串数存一起,用下标取

以前每段长度都得单独写一句。要是十段、一百段呢?
今天学列表:把一串数放进一个方括号里,用编号取。

开场 9 分钟怎么花: 回扣课26"两个函数分工"(3′)→ 抛"十段长度怎么存"(3′)→ 发手帖 + 预告作品《一串数》(3′)。
老师说 steps = [20, 40, 60, 80, 100] 就是五个数排成一队。
取第一个写 steps[0]——编号从 0 开始数,这是今天的全部难点。
第二十七种陷阱:把 1 当第一个下标。 steps[1] 拿到的是第二个;想取最后一个写 steps[5] 会 IndexError 越界——五个数的编号只有 0~4。

第一步 · 数错编号的陷阱 09′–23′ · 14 分钟 · 怎么少一段

陷阱换了(第二十七种)
下标从 1 开始数
老师说 这段想让线从 20 长到 100,五段。写的人从 1 开始数:steps[1] 到 steps[5]。
先猜:运行会怎样?猜完再按。

盯住 steps[i] 里的 i:它从 1 数到 5。
可五个数的编号是 0、1、2、3、4——i=5 那一下就 越界了。

老师纪律:别直接说"下标从 0 开始"。只问: 「steps 里有几个数?它们的编号是几到几?」——让他自己数出来。

第二步 · 编号的规矩 23′–37′ · 14 分钟 · 0 开始,最后是 长度−1

老师说 两条规矩:① 第一个编号是 0;② 五个数的编号是 0~4,不是 1~5。
所以遍历一整串,最省事的写法是 for v in steps:—— 不用管编号,它自己一个一个给你。
下标
0
steps[0]
20
这段多长
20
为什么坚持手推:"从 0 开始"讲十遍不如写一遍。 把每个编号对应的值填出来,越界那一格自然空着。
休息 1
37′–47′ · 10 分钟 · 站起来动一动
老师说 留个问题:想取最后一个数,写 steps[-1] 行不行?
回来验证。

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

老师说 关掉运行。标准骨架遍历五个数。
在纸上写:这一轮编号是几?steps[编号] 是几?这段画多长?
标准骨架:steps = [20, 40, 60, 80, 100], 然后 for v in steps: forward(v); left(90)。
人肉电脑的落点:学生要能说出「v 依次拿到 20、40、60、80、100」 ——说不出这句,就是没懂遍历是"一个个拿"。

第四步 · 自己搭 65′–85′ · 20 分钟 · 写一串你自己的数

老师说 写一个列表,用循环遍历它画出来。要求三条:
① 有方括号列表、至少 4 个数 ② 用 for v in 列表: 遍历 ③ 每个数都被 forward 用上
巡场只问三句:列表里有几个数?遍历时 v 拿到什么? 每个数都用上了吗?
休息 2
85′–91′ · 6 分钟 · 伸个懒腰
老师说 回来只改列表:[20, 40, 60, 80, 100] 改成 [100, 80, 60, 40, 20],看图形怎么变。

第五步 · 改数试试 91′–105′ · 14 分钟 · 把列表倒过来

老师说 只把列表里的数倒过来写:[100, 80, 60, 40, 20]。
先猜:图形会怎么变?再运行。
这一步的收获:循环一个字没改, 只把数据顺序换了,图形就整个反过来——数据决定图形。

第六步 · 读码迁移 105′–120′ · 15 分钟 · 读出下标是几

老师说 最后 15 分钟不写新代码——读。这段按下标取值,说出每一段多长。
读码四步:① 列表里有几个数 → ② 下标怎么算 → ③ 每次取到几 → ④ 图形什么样。
  • 填手帖:本课三问——列表里有几个 / 下标从几开始 / 每次取到几
  • 家庭挑战:把《一串数》讲给爸妈听,说清为什么第一个是 [0]
收尾话术(家长版): 「他今天学的是用一堆数据画图——以后所有的图表、游戏数据都是这么存的。 您可以问他:五个数的最后一个编号是几?他说得清,就是真懂。」

海龟的画布

(摆好卡片,按运行)

对应的 Python 代码 实时同步

本课硬事实 老师自查