到目前为止,我们的计数循环都是每次迭代时计数增 1。如果希望循环按步长为 2 来计数该怎么做?或者步长为 5 呢?或者 10 呢?还有,如果想反向计数,又该怎么做呢?
range
函数可以有一个额外的参数,利用这个参数可以把步长从默认的 1 改为不同的值。
术语箱
参数(argument)就是使用类似
range
的函数时放在括号里的值。我们说,向函数传入了参数。有时也用形参(parameter)这个词,如传递形参。我们将在第 13 章了解更多关于函数、参数和形参的内容。
我们想在交互模式中尝试几个循环。键入第一行时,由于末尾有冒号,IDLE 会自动为你缩进下一行,因为它知道 for
循环后面需要有一个代码块。完成这个代码块后,按两次回车键。试试看:
>>> for i in range(1, 10, 2):print i13579
这里向 range
函数增加了第 3 个参数 2。现在循环按步长 2 计数。再来试一个:
>>> for i in range(5, 26, 5):print i510152025
这是按步长 5 来循环的。反向计数呢?
>>> for i in range(10, 1, -1):print i1098765432
range
函数中的第 3 个参数是负数时,循环会向下计数,而不是向上计数。应该记得,循环会从一个数开始,向上(或向下)直到(但不包括)第二个数,所以在最后一个例子中,我们只向下计数到 2,而不是 1。
可以利用这一点来建立一个倒计时的定时器程序。只需要再增加两行代码。在 IDLE 中打开一个新的编辑器窗口,键入代码清单 8-6 中的程序。试着运行这个程序。
代码清单 8-6 准备好了吗?
先不用担心这个程序里还没有讲到的内容,比如说 import
、time
和 sleep
。所有这些内容都会在后面的章节中讲清楚。你只需要试着运行代码清单 8-6 中的程序,看看它是怎么工作的。这里的关键是 range(10,0,-1)
部分,它会让循环从 10 反向计数到 1。