← 首页
00:00点开始
学情 用时 0′ 尝试 0 出错 0 归因 0
D 数据期 · 第二课
遍历一遍,把它们加起来

列表能存数,可存了之后要干什么?最常见的就是统计:一共多少、最多的是谁。
今天先学第一件:求和。

开场 9 分钟怎么花: 回扣课27"下标从 0"(3′)→ 抛"列表里一共多少"(3′)→ 发手帖 + 预告作品《一共多少》(3′)。
老师说 求和的套路固定三句:先准备一个 0、再一个个加上去、最后它就是要的答案。
那个 0 叫累加器——它必须待在循环外面。
第二十八种陷阱:加的是编号不是数。 total = total + i 加进去的是 0、1、2、3——和永远是 10, 跟数据一个都没关系。看起来在求和,其实在数编号。

第一步 · 加错东西的陷阱 09′–23′ · 14 分钟 · 加出来的和不对

陷阱换了(第二十八种)
加的是下标,不是数据
老师说 这段想把 data 里的四个数加起来:40+70+30+90 应该是 230。
先猜:它算出来是多少?猜完运行。

盯着 total = total + i:这里的 i 其实是列表里的数吗?
对,这个写法恰好对——因为遍历变量拿到了元素本身。可要是换成 + v2[i] 里的下标呢?

老师纪律:别说"你加错了"。先让学生口算 40+70+30+90, 再让他看那条长线有多长——对不上,他自己会去找那一句。

第二步 · 累加器的规矩 23′–37′ · 14 分钟 · 零在外面,加在里面

老师说 两条规矩:① total = 0 写在循环外面(只清空一次); ② total = total + v 写在循环里面(每轮都加)。
加错位置或加错东西,和就永远不对。
这一轮的 v
40
加完 total
40
还剩几个没加
3
为什么坚持手推:累加器是"每一步都留痕"的东西。 把每轮 total 写出来,学生能看到它是滚雪球,不是一次性算完。
休息 1
37′–47′ · 10 分钟 · 站起来动一动
老师说 留个问题:如果 data 里加一个 0,总和会变吗?那条长线会变吗?
回来验证。

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

老师说 关掉运行。data 里有四个数,循环跑四轮。
在纸上写:这一轮加的是几?加完 total 变成几?
标准骨架:total = 0 在循环外;for v in data: total = total + v; 最后 t.forward(total) 把总和画成一条线。
人肉电脑的落点:学生要能说出「四轮之后 total 是 230, 不是 90」——说不出就是没把累加当"滚雪球"。

第四步 · 自己搭 65′–85′ · 20 分钟 · 算出你自己那串数的和

老师说 写一串你自己的数,算出它们的和,再用一条线把和画出来。要求三条:
① total = 0 在循环外 ② 循环里 total = total + 元素 ③ 结果用上了
巡场只问三句:total 在哪归零?加的是元素还是下标?最后这个数用上了吗?
休息 2
85′–91′ · 6 分钟 · 伸个懒腰
老师说 回来改一个数:把 data 里的 90 改成 190,看总和和那条长线怎么变。

第五步 · 改数试试 91′–105′ · 14 分钟 · 改一个数,总和跟着变

老师说 只改列表里一个数:90 改成 190。
先猜总和变成多少,再运行。
这一步的收获:求和循环一个字没改, 数据变一个,总和自动跟着变——这就是"程序算"和"人手算"的差别。

第六步 · 读码迁移 105′–120′ · 15 分钟 · 换个统计:谁最大

老师说 最后 15 分钟不写新代码——读。这段不是求和,是找最大。说出它找出的是几。
读码四步:① 累加器初始化成什么 → ② 每轮怎么更新 → ③ 列出每轮的值 → ④ 最后剩几。
  • 填手帖:本课三问——累加器初始是几 / 每轮加什么 / 最后是多少
  • 家庭挑战:把《一共多少》讲给爸妈听,说清为什么 total = 0 要写在循环外
收尾话术(家长版): 「他今天学的是统计——遍历一遍算出总数。所有成绩统计、消费汇总都是这个套路。 您可以问他:加错了下标会得到什么?他说得清,就是真懂。」

海龟的画布

(摆好卡片,按运行)

对应的 Python 代码 实时同步

本课硬事实 老师自查