Python 里让程序自动重复干活的机制就是循环。上一节讲过 if 判断,本次转入循环结构,这部分内容同样是二级 Python 考试中出现频率很高的考点。下面把 while 与 for 两种写法的要点、容易出错的细节逐一梳理。

Python循环怎么学?while与for两大结构及死循环陷阱

while:条件为真就持续执行

这种情况可以用循环来模拟,这段示例体现出很好的参考价值。while 的规则是:只要判断条件成立,缩进范围内的循环体就会反复运行。教材特别提示了一个关键问题:编写 while 时必须安排能够促使条件最终变为 False 的语句,不能让条件永远成立,此前也不及时让循环停下来;从语言结构上说,若缺少这样的步骤,就会导致死循环,后续语句不会被执行。

for:按顺序挨个取出序列元素

for 更倾向于把序列内容逐个读取出来轮着一遍,正文点明这种写法“在遍历、逐个读取时用得多”。至于 break 和 continue:前者是毫不拖泥带水地终止整个循环,让循环整体画上句号;continue 不会结束循环,它放弃的是本次这一轮,完成后马上开始下一轮。原文在正文中有一个简单的介绍。

Python循环怎么学?while与for两大结构及死循环陷阱

三处常见易错点

第一,while 循环中忘记让计数器走一步,直接后果就是死循环停不住。第二,range 的区间是左包右不含,右侧那个数字取不到,例如 range(1,5) 实际只给出 1、2、3、4 四个值,5 并不在其中。这也是前面示例使用 for 时出现四个值的原因。第三,循环体内属于缩进要求语法规程:循环内部的语句需要对缩进严格对齐,不遵循这种嵌套关系就无法运行。

练习:打印 1 到 10 里的全部偶数

原文给出的练习题目是用 while 或 for 中的任意一种,把 1 到 10 之间所有偶数打印出来。写法上正文直接给出了模板:用 for 时配合 range(1,11) 加条件判断,只有能同时被打印的无理分解数据并不要求,而且原文并没有给出具体答案代码,这里也就不额外补充解法了。

Python循环怎么学?while与for两大结构及死循环陷阱

本周作业可以查阅这些回答

原文的文末有两个问题:在学习者真正看明白了 while 循环,实际编写完毕有问题?看起来出现了疑问,表明这个发帖。

小结

小结:循环是在满足条件时就会反复运行的语句块,如果不让条件变 False,就会带来无限打印或程序停不下来的实际问题;for 则用于逐个拆项;配合 break/continue、清醒的括号范围记忆以及真实环境验证、在开始循环前后进与返回的常规式答案编程学习,比只看语法更有把握;操作按文中练习即是最好的初学者记录条件推写的参考之处。