← 首页
00:00点开始
学情 用时 0′ 尝试 0 出错 0 归因 0
E 文字期 · 第四课
读一条指令,按关键字画图

字符串学了三课:长度、遍历、拆分。今天合成一件真东西——
一条指令字符串,程序自己读懂了再画。这就是最简单的"编程语言"。

开场 9 分钟怎么花: 回扣课33"split 切词"(3′)→ 抛"能不能让程序听懂一句话"(3′)→ 发手帖 + 预告作品《听指令画图》(3′)。
老师说 指令长这样:"BOX 60"——前面是名字,后面是尺寸。
切开之后:parts[0] 是名字,parts[1] 是尺寸。
但注意:切出来的都是字符串,尺寸要 int() 转成数字才能算。
第三十四种陷阱:忘了 int() 转换。 parts[1] 拿到的是字符串 "60",不是数字 60。 直接喂给 forward 就崩——字符串和数字不能混着算。

第一步 · 忘了转换的陷阱 09′–23′ · 14 分钟 · 它为什么画不出来

陷阱换了(第三十四种)
"60" 不是 60
老师说 这段想读懂 "BOX 60" 并画一个 60 的正方形。先猜:能画出来吗?猜完运行。

盯住 size = parts[1]:切出来的是字符串 "60"。
forward("60") 要的是数字——所以要么报错,要么画不出来。

老师纪律:别说"要转 int"。只问: 「parts[1] 拿到的是数字还是文字?怎么验?」——print 一下带引号就是字符串。

第二步 · 读写指令 23′–37′ · 14 分钟 · 名字 + 尺寸

老师说 一条指令三个动作:split 切开 → parts[0] 当名字、int(parts[1]) 当尺寸 → if 判断名字。
名字是文字,所以用 == 比;尺寸是数字,所以要先转。
这就是所有"配置文件"的读法。
名字
BOX
尺寸(转换后)
60
画几段
4
为什么坚持手推:"切出来是字符串"这件事太抽象。 把名字、尺寸、段数分三列写出来,哪一列是文字、哪一列是数字就清楚了。
休息 1
37′–47′ · 10 分钟 · 站起来动一动
老师说 留个问题:如果指令写成 "BOX 60 90",第三个数是干什么的?
回来我们给它加个转角。

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

老师说 关掉运行。把 "BOX 60" 读一遍:切开得到什么?
名字是哪个?尺寸是哪个?转成数字之后是几?
标准骨架:parts = cmd.split(" ");name = parts[0]; size = int(parts[1]);然后按 name 走 BOX / TRI 两支。
人肉电脑的落点:学生要能说出「parts[0] 是文字 BOX, parts[1] 是文字 "60",int 之后才是 60」——说不出就是没分清文字和数字。

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

老师说 自己定一条指令格式,让程序读它画图。要求三条:
① 用 split 切开 ② 用 int() 把尺寸转成数字 ③ 用 if/elif 按名字分两支
巡场只问三句:切出几段?哪一段当名字?哪一段要转成数字?
休息 2
85′–91′ · 6 分钟 · 伸个懒腰
老师说 回来只改指令:把 "BOX 60" 改成 "TRI 60",看程序认不认。

第五步 · 改数试试 91′–105′ · 14 分钟 · 换个名字,换种图形

老师说 只改指令:"BOX 60" 改成 "TRI 60"。
先猜:会画什么?再运行——这就是"同一个程序听不同指令"。
这一步的收获:程序一个字没改, 只换了一个词,就从正方形变成三角形——这就是指令驱动的程序。

第六步 · 读码迁移 105′–120′ · 15 分钟 · 指令还会分大小

老师说 最后 15 分钟不写新代码——读。这段按尺寸大小走不同分支,说出画几段。
读码四步:① 指令切成什么 → ② 名字与尺寸各是几 → ③ 走哪支 → ④ 画几段。
  • 填手帖:本课三问——切成几段 / 哪段要 int / 走哪支
  • 家庭挑战:把《听指令画图》讲给爸妈听,说清字符串和数字为什么要转换
收尾话术(家长版): 「他今天写的东西已经很接近真程序了——读一条指令、判断、执行。 您可以问他:"60" 和 60 有什么不一样?他说得清,就是真懂。」

海龟的画布

(摆好卡片,按运行)

对应的 Python 代码 实时同步

本课硬事实 老师自查