第一种循环称为计数循环。我们还听过有人把它叫做 for
循环,因为很多语言(包括 Python)在程序中都使用 for
关键字来创建这种类型的循环。
下面就来尝试使用计数循环的程序。在 IDLE 中使用 File(文件) > New(新建)命令打开一个新的文本编辑器窗口(就像写第一个程序时一样)。然后键入代码清单 8-1 中的程序。
代码清单 8-1 一个非常简单的
for
循环
for looper in [1, 2, 3, 4, 5]: print "hello"
把它保存为 Loop1.py,运行这个程序(可以使用 Run(运行) > Run Module(运行模块)菜单,也可以用快捷键 F5)。
你会看到这样的结果:
>>> ================ RESTART ================>>>hellohellohellohellohello
嘿,是不是有重复?虽然这里只有一个 print
语句,但程序显示了 5 次“hello”。这是怎么做到的?第一行(for looper in [1, 2, 3, 4, 5]:
)翻译成我们的语言就表示。
1. 变量 looper
的值从 1 开始(所以 looper = 1
)。
2. 对应列表中的每一个值,这个循环会把下一个指令块中的所有工作完成一次。(列表就是中括号中的那些数)。
3. 每次执行循环时,变量 looper
会赋为这个列表中的下一个值。
第二行(print "hello"
)就是 Python 每次循环时要执行的代码块。for
循环需要一个代码块来告诉程序每次循环时做什么。这个代码块(缩进的代码部分)称为循环体(body of the loop)。(还记得吧?上一章我们讨论过缩进和代码块。)
术语箱
每次循环称为一次迭代(iteration)。
下面来试试别的。这一次不再是每次都打印相同的东西,下面让它每次循环时打印不同的东西。代码清单 8-2 就会做这个工作。
代码清单 8-2 每次 for 循环做不同的事情
for looper in [1, 2, 3, 4, 5]: print looper
把这个程序保存为 Loop2.py,并运行。
结果应该类似于:
>>> ================ RESTART ================>>>12345
这一次不再打印 5 次“hello”了,它会打印变量 looper
的值。每次循环时,looper
会取列表中的下一个值。
失控的循环
卡特,我也遇到过同样的问题!每一个程序员都曾经遭遇过失控的循环(也叫做无限循环)。任何时刻(甚至在失控循环中)要停止一个 Python 程序,只需要按下 CTRL-C,即按下 CTRL 键的同时再按下 C 键。以后你会发现这非常方便!游戏和图形程序通常都在一个循环中运行。这些程序需要不断从鼠标、键盘或游戏控制器得到输入,然后处理这个输入,并更新屏幕。开始写这种程序时,我们会大量使用循环。所以你的某个程序很有可能会在某一点陷入循环,所以你要知道如何让它脱身!
中括号做什么用
你可能已经注意到,循环值的列表包围在中括号里。Python 就是利用中括号以及数之间的逗号来建立列表(list)。稍后就会学习列表(准确地讲,是在第 12 章)。不过对现在来说,只要知道列表就是一种“容器”,可以用来存放一堆东西。在这里,这些东西就是数,也就是每次循环迭代时 looper
所取的值。