← 首页
00:00点开始
学情 用时 0′ 尝试 0 出错 0 归因 0
D 数据期 · 第四课
把数据画成看得见的柱子

遍历、求和、找极值——三样本事都学了。今天把它们合起来:
一串数据 → 一排柱子,这就是最常用的图表。

开场 9 分钟怎么花: 回扣课29"打擂台"(3′)→ 抛"数据能不能画出来"(3′)→ 发手帖 + 预告作品《一排柱子》(3′)。
老师说 柱状图的核心就一句:一根柱子 = 一个矩形 = 宽和高的两次前进。
把它打包成 bar(h, w),数据有多少个,就调用多少次。
第三十种陷阱:参数传反了。 bar(h, w) 是先高后宽;写成 bar(w, h) 传值, 柱子高度全一样、宽度跟着数据变——图一看就不对,但程序不报错。

第一步 · 传反的陷阱 09′–23′ · 14 分钟 · 柱子怎么一样高

陷阱换了(第三十种)
参数顺序反了,柱子全错
老师说 这段想把 40、70、30、90 画成四根柱子。函数也是对的。
先猜:运行出来是什么样?猜完再按。

盯住调用 bar(20, v):函数要的是 (高, 宽),
这里把 20 当成了高、把 v 当成了宽——所以四根柱子一样高。

老师纪律:别说"参数传反了"。只问: 「bar 的括号里第一个是什么?你传进去的 20 是什么?」

第二步 · 柱子的规矩 23′–37′ · 14 分钟 · 一根柱 = 一个矩形

老师说 两条规矩:① 一个矩形 = 宽、高、宽、高,转四次 90°(这样正好回到起点); ② 画完要前进一段距离,才有间隔,否则柱子挤在一起。
参数顺序看定义:def bar(h, w) 就是先高后宽。
这根柱的高度
40
宽度
20
画到第几根
1
为什么坚持手推:参数顺序错是"看不出来"的错。 把每根柱的高宽写出来,顺序一错就露馅。
休息 1
37′–47′ · 10 分钟 · 站起来动一动
老师说 留个问题:最后一根柱子画完,海龟停在哪?
回来验证。

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

老师说 关掉运行。四根柱子,每根调用一次 bar。
在纸上写:这一根的高度是几?宽度是几?画完海龟走了多远?
标准骨架:def bar(h, w) 里是两轮 forward(w); left(90); forward(h); left(90); 主程序 bar(v, 20) 再 forward(30)。
人肉电脑的落点:学生要能说出「画完一根柱子海龟回到了起点、 方向朝右,所以再 forward 就移到下一根」——说不出就是没懂矩形怎么闭合。

第四步 · 自己搭 65′–85′ · 20 分钟 · 画你自己的柱状图

老师说 用自己的数据画柱状图。要求三条:
① 有 def bar(h, w) 这样的函数 ② 用 for 遍历列表调用它 ③ 柱子之间有空隙
巡场只问三句:函数几个参数?调用时传的顺序对不对? 柱子之间怎么隔开的?
休息 2
85′–91′ · 6 分钟 · 伸个懒腰
老师说 回来改一处:把柱宽 20 改成 40,看图形怎么变。

第五步 · 改数试试 91′–105′ · 14 分钟 · 改柱宽,看图怎么变

老师说 只改一个数:bar(v, 20) 里的 20 改成 40。
先猜:四根柱子会变成什么样?再运行。
这一步的收获:只改柱宽,高度一点没变—— 高度由数据决定,宽度由你决定。哪个是数据、哪个是样式,一眼分清。

第六步 · 读码迁移 105′–120′ · 15 分钟 · 读出最高那根

老师说 最后 15 分钟不写新代码——读。这段在画图之前先算了一个数,说出它是几、用来干什么。
读码四步:① 列表有几个数 → ② 循环算什么 → ③ 函数画什么 → ④ 最后那条线是什么。
  • 填手帖:本课三问——函数几个参数 / 传参顺序 / 柱子怎么隔开
  • 家庭挑战:把《一排柱子》讲给爸妈听,说清高度和宽度分别由谁决定
收尾话术(家长版): 「他今天把三周学的都合起来了——列表存数据、循环遍历、函数画图。 您可以问他:参数传反了会怎样?他说得清,就是真懂。」

海龟的画布

(摆好卡片,按运行)

对应的 Python 代码 实时同步

本课硬事实 老师自查