循环
让电脑把同一件事做一遍又一遍。
它是什么
循环 把重复交给电脑。 人会烦,电脑不会。
数 1 到 100、给全班每人打印一张奖状、把列表里每个分数看一遍: 这些都不必把同一行抄一百次。 写一个循环,让它转圈。
最常见的一种是 for ... in ...。
它适合「对每个都做一次」,或「已知要做几遍」。
for n in range(3):
print(n)会打印 0、1、2。
次数事先不清楚时,改用 while。 条件还真,就再做一圈。
名字从哪来
循环的英文是 loop,原意是「圈」「环」。 程序走到末尾,再跳回开头,像绕圈。
for 和 while 这两个词,来自 C 语言家族。
更早的 FORTRAN 用 DO 表示「做若干次」。
Python 的 for 更像「对每一个」:它走过一段序列,而不是自己用计数器加到某个数。
range 是 Python 准备的整数序列帮手。
for n in range(5) 读起来像:对 0 到 4 里的每一个 n。
循环体要 缩进。
for 后面要冒号。
这和 if 同一套规矩。
它怎么工作
range(n) 从 0 开始。
一共 n 个数。
不停在 n 上,停在 n 前面。
range(1, 6) 是 1 到 5。
左闭右开。
第三个参数是步长:range(0, 10, 2) 得到偶数。
也可以直接走过 列表 或 字符串。
for s in [90, 85]:
print(s)
for ch in "hi":
print(ch)循环里可以累加,也可以再写 if。
total = 0
for n in [90, 85, 70]:
total = total + n
print(total)累加先准备一个盒子。 每一圈加上去。 循环结束,盒子里就是结果。
break 立刻离开循环。
continue 跳过本圈剩下的句子,进入下一圈。
pass 什么也不做,只占位置。
循环还可以套循环,见 嵌套。
range 也是一种 内置函数。
怎么选 for 还是 while:
- 次数明确,或要走过一组东西:用
for - 停不停取决于条件:用
while
例如:打印 1 到 5,用 for n in range(1, 6)。
例如:一直问,直到输入 stop,用 while。
生活里在哪里
- 值日:每一天擦一次黑板。
- 跳绳:同一组动作重复很多下。
- 发本子:对每一个同学发一本。
- 音乐节拍:反复同一段节奏。
- 工厂流水线:对每一个零件做相同检查。
生活里「对每一个」最像 for。 「一直做到某种情况出现」最像 while。
和相近概念的差别
顺序:做一次就往下。 分支:选一条路。 循环:同一条路走很多遍。
for 事先知道要走过谁。 while 事先只知道停的条件。
range(3) 不是列表本身,但它能产生 0、1、2。
需要真的列表时,可以 list(range(3))。
break 离开循环,不是结束整个程序。
函数里的 return 才会把函数结束。
见 函数。
常见误会
误会 1:以为 range(3) 含 3。
它停在 3 前面。 得到 0、1、2。
误会 2:循环体忘了缩进,或忘了冒号。
身体不属于 for,循环就空了。
误会 3:把 for 的次数和 while 的条件搞混。
for 走序列。 while 问真假。
误会 4:累加忘记先把盒子清成 0。
没有起点,每一圈往哪加?
误会 5:循环变量名字和外面的变量搅在一起。
for n in ... 会改写 n。
外面如果也在用 n,可能被覆盖。
想知道更多
- 书:潘洪波《小学生 Python 趣味编程》(打印图案、累加分数,都是循环的典型练习)。
- 书:埃里克·马瑟斯《Python 编程:从入门到实践》(循环一章可以和家长一起改「重复几遍」)。
未登录时不会保存学习进度