Python for循环

除了 while 循环,还有一种更具有可读性的循环结构,这就是 for 循环,它可以将同一段代码重复执行一定的次数。for 循环使得编写一个循环更为简单:只需要创建一个变量,当条件为真时一直循环,并且在每轮循环的末尾修改变量就可以了。

for循环

在 Python 中,for 语句包含以下部分:
  • for关键字;
  • 变量;
  • in关键字;
  • 范围;
  • 冒号;
  • 从下一行开始,缩进的代码块。

提示:for 循环用于循环代码一定次数,而 while 循环是只要满足某个条件就会不断重复。

for 循环的一种很常见的用法是,对列表中每个元素执行操作,或者对字符串中的每个字符执行操作(用术语来讲,这种操作称为遍历或迭代)。例如,如下所示的 for 循环会把动物园中的动物打印出来,代码如下。
animals = ["Tiger","Lion","Panda","Bear","Welf"]
for animal in animals:
    print ("This zoo contains a "+animal+".")
这段程序的运行结果如图 1 所示。

for循环中的动物循环
图 1
 
我们还可以使用 for 循环来改写一下前面数羊的 while 循环,代码如下。
for sheepCounted in [0,1,2,3,4,5,6,7,8,9]:
    print("I have counted "+str(sheepCounted)+ " sheep.")
print("I fall asleep.")
得到的结果如图 2 所示。

用for循环改写前面while循环
图 2
 
可以看到,sheepCounted 是一个变量,它被依次赋予列表中的每个值,并且针对每个值,都会执行一次语句块。为了简单起见,我们这里只是从 0 数到 9,就进入了梦乡。

range 函数

除了使用列表把每个变量要用到的每个值都罗列出来,我们还可以借助 range 函数做到这一点。range 函数生成一个等差级数组,比如 range(10) 生成从 0 到 9 的整数,注意,如果只有一个参数,则这个参数为右边界,而左边界默认为 0。

对于上面的示例,我们可以使用 range(10) 替换 [0,1,2,3,4,5,6,7,8,9],代码如下。
for sheepCounted in range(10):
    print("I have counted "+str(sheepCounted)+ " sheep.")
print("I fall asleep.")
得到的结果是一样的,如图 3 所示。

range(函数示例
图 3

如果不想从 0 开始,那就给 range 函数两个参数:开始的数字和结束的数字。我们还是以数羊为例,这次给 range 函数两个数字,1 和 31。Python 会返回一个数字列表,从第一个数字(1)开始,并以第 2 个数字减 1(即 31-1)结束,代码如下。
for sheepCounted in range(1,31):
    print("I have counted "+str(sheepCounted)+ " sheep.")
print("I fall asleep.")
得到的结果是从 1 数到 30,然后就睡着了,如图 4 所示。

显示结果
图 4

我们还可以让 range() 函数按照一定数值递增。在这种情况下,我们需要输入 3 个参数,分别是:起始数、结束数和增量。还是以数羊为例,如果我们只是想要数偶数,我们告诉 range() 从 2 开始,每次以 2 递增。这里,我们给 range() 一个起始数 2,一个结束数 30(31减1)和一个增量 2,代码如下。
for sheepCounted in range(2,31,2):
    print("I have counted "+str(sheepCounted)+ " sheep.")
print("I fall asleep.")
这次,数的羊全是偶数只,如图 5 所示。

让range()函数按照偶数递增
图 5

提示:break 语句和 continue 语句在 for 循环中同样适用,其用法和在 while 循环中是一样的,这里不再赘述。