首页 » 与孩子一起学编程 » 与孩子一起学编程全文在线阅读

《与孩子一起学编程》8.1 计数循环

关灯直达底部

第一种循环称为计数循环。我们还听过有人把它叫做 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 会取列表中的下一个值。

失控的循环

Carter,我也遇到过同样的问题!每一个程序员都曾经遭遇过失控的循环(也叫做无限循环)。任何时刻(甚至在失控循环中)要停止一个 Python 程序,只需要按下 CTRL-C,即按下 CTRL 键的同时再按下 C 键。以后你会发现这非常方便!游戏和图形程序通常都在一个循环中运行。这些程序需要不断从鼠标、键盘或游戏控制器得到输入,然后处理这个输入,并更新屏幕。开始写这种程序时,我们会大量使用循环。所以你的某个程序很有可能会在某一点陷入循环,所以你要知道如何让它脱身!

中括号做什么用

你可能已经注意到,循环值的列表包围在中括号里。Python 就是利用中括号以及数之间的逗号来建立列表(list)。稍后就会学习列表(准确地讲,是在第 12 章)。不过对现在来说,只要知道列表就是一种“容器”,可以用来存放一堆东西。在这里,这些东西就是数,也就是每次循环迭代时 looper 所取的值。