3.5 for循环和while循环
你可以把循环看作一段代码不断重复执行,这一行为只有在满足某种中止条件时才会停止。例如,之前的代码就不是一个循环,因为它只执行了一次,即我们只检验了a一次。
Python存在两种类型的循环:
·for循环
·while循环
for循环具有一个明确的迭代次数。你可以把一次迭代看作对for循环中所包含指令的一次执行。for循环中声明的迭代次数告诉程序循环中包含的指令应该被重复执行多少次。
那么怎样创建一个for循环呢?很简单,就像这样:
首先通过写下for关键词来指定循环类型以达成初始化。然后创建一个变量i,它和整数范围(1,20)相关联。这指的是当我们首次进入循环的时候,i等于1,第二次执行的时候i等于2,如此反复,直到i等于19。为什么是19呢?这是因为Python中的范围不包含上界,所以最后一次迭代的i会等于19。至于循环所包含的指令,在此例中仅仅是使用方法print()在控制台中打印出变量i的值。还有一点需要注意的是,for循环之后的代码需要等到for循环执行完毕才会被执行。
以下是开始执行代码后所得到的结果:
可以看出我们的代码显示了大于0且小于20的每一个整数。
你也可以用for循环遍历列表的元素,以下面这种方式进行:
这里我们回到一维列表L3。以上代码对L3列表的每一个元素都进行了迭代并且显示了它们。如果你运行这一代码,你将会看到这个数组中从3到5的所有元素。
另一方面,while循环只有当条件不满足时才会停止。只要所给定的条件被满足,循环就会一直进行下去。我用以下的例子来阐述while循环:
这里我们创建了一个新的变量stop。这个变量的类型叫作布尔值(bool),因为布尔值只能被赋予两种值——True或False。然后我们创建了一个变量i用来记录while循环执行的次数。下一步,我们创建了一个while循环,只要stop为False,它就会不停地执行,并且仅当stop变为True的时候循环才会停止。
在这个循环中,i每增加1,i就会被显示一次,直到i被检查出大于或等于19。如果i大于或等于19,stop就变为True,一旦stop变成了True,循环就被打破(break)了。
通过执行这段代码,你会看到和for循环例子中一样的输出:
还有一点需要注意,你还可以将for循环或while循环嵌套在另一个循环的内部。例如,如果要一个接一个地显示我们之前创建的二维列表L4中的所有元素,你就得先创建一个for循环遍历每一行,然后再创建另一个for循环(在前一个for循环里面)迭代这一行的每一个值,如下所示:
运行这段代码将得到以下输出:
这一结果与列表L4一致。
总而言之,for循环和while循环使我们能够简单地处理重复性的任务。for循环总是需要一个预定义的迭代范围:你需要明确循环什么时候会停止。while循环则是通过一个未明确定义的迭代范围运行,有时很难判断会发生多少次迭代。while循环只要其循环条件满足,就会不断运行。
练习
分别构建一个能计算正整数阶乘的for循环和while循环。
提示:阶乘是一个数学函数,它会返回小于等于该函数参数的所有正整数的乘积。公式如下:
其中:
·f(n)——阶乘函数
·n——阶乘问题所给的整数
阶乘函数由数学符号!表示,例如:
本练习的答案可以在GitHub页面的Chapter 03/For and While Loops/homework.py文件中找到。