第 04 节:重复执行,但别失控
本节 objectives:
- 用
for遍历一组已有值- 用
while表达“不满足前一直做”- 判断什么时候循环该停止
复制粘贴三遍,通常是在提醒你该循环了
如果你写了三行几乎一样的 print(),程序已经在暗示:这里有重复结构。Python 的 for 常用于遍历序列或 range() 生成的一串数;while 则在条件为真时持续执行1。
循环不是为了炫技,而是为了让“对每个东西做同一件事”变得清楚。
讲解
for 适合已知集合。 for name in names: 的意思是:从 names 里依次取出一个值,临时命名为 name,执行缩进块。
range() 适合计数。 range(3) 产生 0、1、2 这样的整数序列,常用来重复固定次数1。
while 适合等条件变化。 例如“只要余额还不够,继续存钱”。写 while 时必须能说清停止条件,否则会变成无限循环。
break 可以提前退出。 当你已经找到目标,不必继续循环剩余数据。Python 控制流文档把 break 和 continue 作为循环控制工具介绍1。
跟我做一遍(worked example)
统计三个任务里完成了几个:
循环每次只看一个任务。count 是累加器:从 0 开始,每发现一个完成项就加 1。这样比手写三次判断更容易扩展到十个任务。
换你补全(faded example)
补全循环,输出 1 到 3:
答案:
关键判断点是最后一行:如果忘了让 number 变化,条件会一直为真。
小结 + 通向下一节
循环把重复压成结构。下一节把一段有名字的结构抽出来,让你能在不同地方重复调用它。
Footnotes
-
Python Tutorial: More Control Flow Tools — https://docs.python.org/3/tutorial/controlflow.html ↩ ↩2 ↩3
练习
Level 1: 给名字列表逐个打招呼。
- 做法:创建三个名字组成的列表,用
for输出Hello, <name>。
提示 1
先写 names = ["Ada", "Lin", "Sam"]。
Level 2: 找第一个长单词。
- 做法:遍历单词列表,找到第一个长度大于 5 的词就打印并
break。
提示 2
字符串可以用 len(word) 取长度。
看参考答案
break 表达“目标已找到,停止搜索”。