← 首页
00:00点开始
学情 用时 0′ 尝试 0 出错 0 归因 0
C 组织期 · 第一课
给一段代码起个名字,反复用

前面画正方形,你每次都得重写四行。
今天学打包:把那四行收进一个名字里,以后喊一次名字就行。

开场 9 分钟怎么花: 回扣课23"两种循环"(3′)→ 抛"三行变一行"(3′)→ 发手帖 + 预告作品《把它打包起来》(3′)。
老师说 打包分两步:先定义(def)、再调用(喊名字)。
定义只是"记住这段话",不画东西——真正画的是调用那一下。
第二十四种陷阱:写了 def 就以为画完了。 Python 里 def 只负责登记,不调用就永远不执行—— 运行结果是一片空白,但它不报错,最难发现。

第一步 · 不执行的陷阱 09′–23′ · 14 分钟 · 怎么什么都没画

陷阱换了(第二十四种)
定义好了,但没人喊它
老师说 这段代码把正方形打包好了,还给它起了名字。
先猜:按运行会画出什么?猜完再按。

盯住最后:代码到 t.left(90) 就结束了。
从头到尾没有一句 square(...)——所以它压根没被画。

老师纪律:别说"你忘了调用"。只问: 「这段代码哪一句是真正画图的?」——他会发现 def 里面那些从来没被执行。

第二步 · 打包的规矩 23′–37′ · 14 分钟 · 名字、参数、缩进

老师说 打包三件事:起名字(def square)、留参数(括号里的 size)、 缩进(里面每行都属于它)。
以后喊 square(80),就是把 80 塞给 size 再跑一遍。
这次传的 size
40
画几段
4
每段转
90°
为什么坚持手推:学生最容易以为"函数会自己跑"。 把每次调用的参数写出来,他就能看出"一次调用 = 完整跑一遍"。
休息 1
37′–47′ · 10 分钟 · 站起来动一动
老师说 留个问题:如果只写一次 square(120),画面上有几个正方形?
回来验证。

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

老师说 关掉运行。标准骨架调用了三次。
在纸上写:这次 size 是几?画几段?一共画了几个正方形?
标准骨架:def square(size) 里是 for i in range(4) + 前进 + 左转 90; 下面是 square(40)、square(80)、square(120)。
人肉电脑的落点:学生要能说出「函数体跑完会回到调用它的那一行, 接着执行下一句」——说不出这句,就是没懂调用怎么回来的。

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

老师说 写一个自己的函数并至少调用两次。要求三条:
① 用 def 起名字 ② 括号里有参数 ③ 调用两次、参数不同
巡场只问三句:函数叫什么名字?括号里的参数用在哪? 调用了几次?看到 def 后面没有调用直接拦。
休息 2
85′–91′ · 6 分钟 · 伸个懒腰
老师说 回来把函数改一处:让正方形画成三角形(range(4) → range(3),转角 90 → 120)。

第五步 · 改数试试 91′–105′ · 14 分钟 · 改一处,三个图形全变

老师说 只改函数体里两个数:range(4) 改 range(3)、left(90) 改 left(120)。
先猜三个图形会变成什么,再运行。
这一步的收获:只改函数体一处, 三次调用全都跟着变——这就是打包的价值:改一处,到处生效。

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

老师说 最后 15 分钟不写新代码——读。这段有两个函数,说出它一共画几个图形。
读码四步:① 有几个函数 → ② 各被调用几次 → ③ 每次参数是多少 → ④ 一共几个图形。
  • 填手帖:本课三问——函数叫什么 / 参数用在哪 / 调用了几次
  • 家庭挑战:把《把它打包起来》讲给爸妈听,说清 def 和调用有什么区别
收尾话术(家长版): 「他今天学的不是'多写一行 def',是把重复的东西收进一个名字里。 您可以问他:只写 def 不调用会怎样?他说得清,就是真懂。」

海龟的画布

(摆好卡片,按运行)

对应的 Python 代码 实时同步

本课硬事实 老师自查