← 首页
00:00点开始
学情 用时 0′ 尝试 0 出错 0 归因 0
E 文字期 · 第二课
把字符串拆开,一个字符一个字符处理

上一课只用了字符串的长度。今天我们真的把它拆开:
一个字符一个字符拿出来看——这就是遍历。

开场 9 分钟怎么花: 回扣课31"下标从 0、长度差一"(3′)→ 抛"能不能自动一个个拿出来"(3′)→ 发手帖 + 预告作品《一个字一个字看》(3′)。
老师说 for c in word:——每转一圈,c 就是下一个字符。
拿到字符就能判断:是 O 就做这个,不是就做那个。
不用下标,不用 len,一步到位。
第三十二种陷阱:把字符当下标用。 for c in word 里的 c 是字母本身(像 "C"),不是编号—— 写 word[c] 会报 TypeError:下标必须是整数。

第一步 · 拿错东西的陷阱 09′–23′ · 14 分钟 · c 不是编号

陷阱换了(第三十二种)
遍历拿到的是字符,不是下标
老师说 这段想让每个字母决定一段线的长度。先猜:运行会怎样?猜完再按。

盯住 word[c]:c 是字母 "C",不是数字 0。
字符串的下标必须是整数——所以这里直接 TypeError。

老师纪律:别说"c 是字符"。只问: 「for c in word 的时候,c 拿到的是"第几个"还是"什么字母"?」

第二步 · 两种遍历 23′–37′ · 14 分钟 · 要字符还是下标

老师说 两条路,看你需要什么:
① 只要字符 → for c in word:(c 是字母) ② 需要编号 → for i in range(len(word)):(再用 word[i] 取)
别把两条路混着走——混了就会拿字母当下标。
现在拿到
C
它是 O 吗
不是
这一段长
80
为什么坚持手推:遍历是"走一遍"的过程。 把每个字符和它触发的动作写出来,学生就知道 if 是在逐字判断。
休息 1
37′–47′ · 10 分钟 · 站起来动一动
老师说 留个问题:如果把 word 改成 "OOOO",画出来四段一样长吗?
回来验证。

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

老师说 关掉运行。word 是 CODE,四轮。
在纸上写:这一轮 c 是哪个字母?它等于 O 吗?这段多长?
标准骨架:for c in word: 里 if c == "O": forward(40) 否则 forward(80),每轮 left(90)。
人肉电脑的落点:学生要能说出「只有第三轮 c 是 O, 其余三轮都不是」——说不出就是没把遍历当成逐字走。

第四步 · 自己搭 65′–85′ · 20 分钟 · 让你的字决定图形

老师说 写一段遍历:逐字判断,不同字符做不同的事。要求三条:
① 用 for c in 字符串 ② 用 if c == "某个字母" 判断 ③ 两支做不一样的动作
巡场只问三句:c 拿到的是什么?跟谁比?两支分别做什么?
休息 2
85′–91′ · 6 分钟 · 伸个懒腰
老师说 回来换个字:把 "CODE" 改成 "COCO",看哪几段变了。

第五步 · 改数试试 91′–105′ · 14 分钟 · 换字,哪几段变

老师说 只改字符串:"CODE" 改成 "COCO"。
先猜:四段里哪几段是短的?再运行。
这一步的收获:循环一个字没改, 只换了字母顺序,短段就从第 3 个移到第 2、4 个——顺序决定图形。

第六步 · 读码迁移 105′–120′ · 15 分钟 · 数数有几个 O

老师说 最后 15 分钟不写新代码——读。这段在遍历里数数,说出最后打印几。
读码四步:① 字符串有哪几个字符 → ② 计数器在哪归零 → ③ 加一的条件是什么 → ④ 满足几次。
  • 填手帖:本课三问——c 拿到什么 / 跟谁比 / 满足几次
  • 家庭挑战:把《一个字一个字看》讲给爸妈听,说清遍历和下标遍历的区别
收尾话术(家长版): 「他今天学的是逐字处理——搜索、统计、密码校验都是这个套路。 您可以问他:for c in word 里 c 是什么?他说得清,就是真懂。」

海龟的画布

(摆好卡片,按运行)

对应的 Python 代码 实时同步

本课硬事实 老师自查