
6.2 while循环语句

↑扫码看视频
while循环语句的特点和for循环语句类似。在本节中,通过具体实例的实现过程,详细讲解while循环语句的知识与使用方法。
6.2.1 基本的while循环语句
while语句用于循环执行某段程序,以处理需要重复处理的相同任务。在Python语言中,虽然绝大多数的循环结构都是用for循环语句来完成的,但是while循环语句也可以完成for语句的功能,只不过不如for循环语句来得简单明了。
while循环语句主要用于构建比较特别的循环。while循环语句最大的特点是循环次数不确定,当不知道语句块或者语句需要重复执行多少次时,使用while语句是最好的选择。当while的表达式为真时,while语句重复执行一条语句或者语句块。使用while语句的基本格式如下所示。

在上述格式中,当condition为真时会循环执行后面的执行语句,一直到条件为假时才退出循环。如果第一次条件表达式为假,那么会忽略while循环。如果条件表达式一直为真,会一直执行while循环。也就是说,会一直循环执行while循环中的执行语句部分,直到当条件不能被满足为假的条件时才退出循环,并执行循环体后面的语句。

实例文件while.py的具体实现代码如下所示。

执行后输出结果如下所示。

6.2.2 while…else循环语句
while…else循环语句的语法格式如下所示。

在上述语法格式中,while语句只有在测试条件为假时才会停止。在while语句的循环体中一定要包含改变测试条件的语句,以保证循环能够结束,从而避免出现死循环。while语句包含与if语句相同条件的测试语句,如果条件为真就执行循环体;如果条件为假,则终止循环。while语句也有一个可选的else语句块,它的作用与for循环中的else语句块一样。当while循环不是由break语句终止时,会执行else语句块中的语句。而条件语句也可以用于while循环中,其作用是跳过条件后的语句,提前进入下一个循环。

实例文件else.py的具体实现代码如下所示。


执行后输出的结果如下所示。

6.2.3 解决死循环问题
死循环是指循环一直执行下去而不会停止,有时也被称为无限循环。在Python程序中,while循环语句不像for循环语句那样遍历某一个对象的集合后停止循环。在使用while语句时,最容易出现的问题就是测试条件永远为真,导致死循环发生。

实例文件wuxian.py的具体实现代码如下所示。

在上述代码中,因为循环条件变量var的值一直为1,该条件一直为true,所以循环将无限执行下去,这就形成了死循环。执行后将一直提示用户输入一个整数,在用户输入一个整数后还继续无限次数的提示用户输入一个整数,如图6-1所示。

图6-1 无限次数提示用户输入一个整数
使用〈CTRL+C〉组合键可以中断上述死循环,中断后的效果如图6-2所示。

图6-2 中断死循环
注意:在使用while循环时,读者应仔细检查while语句的测试条件,避免出现死循环的问题。
6.2.4 嵌套的while循环语句
和使用for循环嵌套语句一样,在Python程序中也可以使用while循环的嵌套形式,具体语法格式如下所示。

还可以在循环体内嵌套使用其他类型的循环,例如可以在while循环中嵌入for循环,也可以在for循环中嵌入使用while循环。

实例文件qiantao.py的具体实现代码如下所示。

执行后输出的结果如下所示。
