固定的数(比如 range
函数中使用的数)也称为常数(constant)。如果在一个 for
循环的 range
函数中使用常数,程序运行时循环总会运行相同的次数。在这种情况下,我们称循环次数是硬编码的(hard-coded),因为它在你的代码中被定义了,而且永远不会改变。这往往不是我们真正想要的。
有时我们希望循环次数由用户来决定,或者由程序的另一部分决定。对于这种情况,我们就需要一个变量。
例如,假设你要建立一个太空神枪手游戏。只要有外星人被消灭就要重绘屏幕。必须有某个计数器来跟踪还剩下多少外星人,另外只要屏幕更新,就需要循环处理剩下的外星人,在屏幕上画出他们的图像。每次玩家消灭一个外星人时外星人数就会改变。
因为我们还没有学习如何在屏幕上画外星人,下面先给出一个使用可变循环的简单示例程序:
for i in range (1, numStars): print '*',
>>> ====================== RESTART ======================>>>How many stars do you want? 5* * * *
这个程序会询问用户想要多少个星号,然后使用一个可变循环准确地打印这些星号。嗯,只能算基本准确!我们想要 5 个星号,可是只得到了 4 个!唉呀,我们忘记了 for
循环不是达到 range
函数中第二个数时才停止,它在比这个数少 1 时就停止了。所以需要对用户的输入加 1。
还有一种方法可以完成同样的工作,就是从 0 开始循环计数,而不是 1。(这一点在第 8 章提到过。)这种做法在编程中很常用,下一章会解释为什么。先来看看这个循环是怎样的:
numStars = int(raw_input ("How many stars do you want? "))for i in range(0, numStars): print '*',>>> ====================== RESTART =====================>>>How many stars do you want? 5* * * * *