![Python语言从入门到精通](https://wfqqreader-1252317822.image.myqcloud.com/cover/679/33643679/b_33643679.jpg)
6.2 while循环语句
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/79_02.jpg?sign=1739060010-5mP6F8YuLNQurTUDSC1vxGCFzpxt6tpV-0-783faeda2fffea4118cd3dd946bca482)
↑扫码看视频
while循环语句的特点和for循环语句类似。在本节中,通过具体实例的实现过程,详细讲解while循环语句的知识与使用方法。
6.2.1 基本的while循环语句
while语句用于循环执行某段程序,以处理需要重复处理的相同任务。在Python语言中,虽然绝大多数的循环结构都是用for循环语句来完成的,但是while循环语句也可以完成for语句的功能,只不过不如for循环语句来得简单明了。
while循环语句主要用于构建比较特别的循环。while循环语句最大的特点是循环次数不确定,当不知道语句块或者语句需要重复执行多少次时,使用while语句是最好的选择。当while的表达式为真时,while语句重复执行一条语句或者语句块。使用while语句的基本格式如下所示。
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/79_03.jpg?sign=1739060010-HwuUc9cxt04vTpVIIuWYPwUlh64kD7Q0-0-fe32846743fc90271a174397bdc8e42b)
在上述格式中,当condition为真时会循环执行后面的执行语句,一直到条件为假时才退出循环。如果第一次条件表达式为假,那么会忽略while循环。如果条件表达式一直为真,会一直执行while循环。也就是说,会一直循环执行while循环中的执行语句部分,直到当条件不能被满足为假的条件时才退出循环,并执行循环体后面的语句。
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/80_01.jpg?sign=1739060010-eTBA7hsQsryN4RoiDIrn4IDJTqnsQYWx-0-bf00da9890d5a09332b2b0d1f41ad4d9)
实例文件while.py的具体实现代码如下所示。
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/80_02.jpg?sign=1739060010-v7HBL7r7A1qTOGbz4f0LYSWnRndscCPZ-0-e52fd85f1cef3fcb043eb52477270151)
执行后输出结果如下所示。
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/80_03.jpg?sign=1739060010-2sJXqYzu5mnDxeFfkb0EPHiagu1UmxRW-0-afea37a91df01241c380abd4b2c71443)
6.2.2 while…else循环语句
while…else循环语句的语法格式如下所示。
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/80_04.jpg?sign=1739060010-4lb6AMXIFVkScPQodj09tvNif8pfW7Zu-0-53cb3bfe3057f95e86dd62df5c673c7c)
在上述语法格式中,while语句只有在测试条件为假时才会停止。在while语句的循环体中一定要包含改变测试条件的语句,以保证循环能够结束,从而避免出现死循环。while语句包含与if语句相同条件的测试语句,如果条件为真就执行循环体;如果条件为假,则终止循环。while语句也有一个可选的else语句块,它的作用与for循环中的else语句块一样。当while循环不是由break语句终止时,会执行else语句块中的语句。而条件语句也可以用于while循环中,其作用是跳过条件后的语句,提前进入下一个循环。
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/80_05.jpg?sign=1739060010-cIHhyc5nk6r3g7BnNpVvJY2zf1Isakgl-0-a2814f1effdfe31aa9a8fe3c4d3ec24d)
实例文件else.py的具体实现代码如下所示。
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/80_06.jpg?sign=1739060010-uoWEafN8eZjqE7QLvaBmQs0ZBlbBN5SV-0-686aceddd9e49b3b59979e9cad9d7e05)
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/81_01.jpg?sign=1739060010-J97gCyNry817NQ9h6AP2hjnNIHj0aVwJ-0-b876a2a6be20e972debe79fae001ca59)
执行后输出的结果如下所示。
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/81_02.jpg?sign=1739060010-eixm9tJI8X2CpkdGUPIv10AqJGjIk3AP-0-a24bafab867bda74fd43d868194b035a)
6.2.3 解决死循环问题
死循环是指循环一直执行下去而不会停止,有时也被称为无限循环。在Python程序中,while循环语句不像for循环语句那样遍历某一个对象的集合后停止循环。在使用while语句时,最容易出现的问题就是测试条件永远为真,导致死循环发生。
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/81_03.jpg?sign=1739060010-3iefLC9LVLJfxPQHTuw7V9qo0gtqvZJM-0-9b63fa385090d220ab0999fc2f9f7a8c)
实例文件wuxian.py的具体实现代码如下所示。
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/81_04.jpg?sign=1739060010-zx5HwkP54LV8WV9w14yEdij43rBQroZr-0-e1366acbb0be60593be22067bb463474)
在上述代码中,因为循环条件变量var的值一直为1,该条件一直为true,所以循环将无限执行下去,这就形成了死循环。执行后将一直提示用户输入一个整数,在用户输入一个整数后还继续无限次数的提示用户输入一个整数,如图6-1所示。
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/81_05.jpg?sign=1739060010-hqazLsT9ZFjSoKI4AwBe5iUa0TjFoUJI-0-55c85385dbb7702b9dc555e817f42f05)
图6-1 无限次数提示用户输入一个整数
使用〈CTRL+C〉组合键可以中断上述死循环,中断后的效果如图6-2所示。
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/81_06.jpg?sign=1739060010-fwX0WF6nDSC4Pp8xqGYQjlagxHKW5euz-0-0fe4fdce5b76fd35f023a1a10c7e18ea)
图6-2 中断死循环
注意:在使用while循环时,读者应仔细检查while语句的测试条件,避免出现死循环的问题。
6.2.4 嵌套的while循环语句
和使用for循环嵌套语句一样,在Python程序中也可以使用while循环的嵌套形式,具体语法格式如下所示。
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/82_01.jpg?sign=1739060010-SHCOM0Zd9m4wflZyp4CvUcyQVkqCSsq4-0-58b84c3685f9f80e79d9aff393fa4b24)
还可以在循环体内嵌套使用其他类型的循环,例如可以在while循环中嵌入for循环,也可以在for循环中嵌入使用while循环。
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/82_02.jpg?sign=1739060010-D1V6HlF0zzaoYtUmShBO352O8Usomb99-0-fac7683a9ba9098a078b71fab0b5d4c5)
实例文件qiantao.py的具体实现代码如下所示。
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/82_03.jpg?sign=1739060010-rscozwG0QkHt6ruWiqR6wJt9wftjoHBd-0-e4efa880f833866b503764b1fb08b617)
执行后输出的结果如下所示。
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/82_04.jpg?sign=1739060010-7Iy0wVgMSqXIefhGd2GdEh4CLWxCRjDL-0-0f057b73287ee96c00f89b67a1f227cd)