Python循环之while无限迭代


Posted in Python onApril 30, 2022

前言

Python 有 while 语句和 for 语句作为循环处理。虽然 for 语句具有一定数量的进程,但 while 语句是『直到满足条件』类型的循环进程。

对于无限迭代 while,循环执行的次数没有事先明确指定。相反,只要满足某些条件指定的块就会重复执行。

使用定义迭代 for,指定块将被执行的次数在循环开始时已经倍明确指定。

除了 while 语句的一般特性之外,Python 也有自己的规范,例如对 do while 语句的支持不足。循环处理是编程的基本语法。

while循环

Python循环之while无限迭代

while <布尔计算的表达式>:
    <执行的python语句> # 循环体

控制表达式 ,<布尔计算的表达式> 通常涉及一个或多个变量,这些变量在开始循环之前被初始化,然后在循环体的某处可能会被修改。

当 while 遇到循环时,首先在 Boolean context 中 <布尔计算的表达式> 进行评估。

n = 5
while n > 0:
    n -= 1
    print(n)

输出:

4
3
2
1
0

while 首先测试循环的控制表达式。假设开始就为假,则循环体将永远不会被执行。

n = 5
while n > 5:
    n -= 1
    print(n)

break语句 和 continue语句

while 循环的整个主体都在每次迭代中执行,Python 提供了两个过早终止循环迭代的关键字。

  • break 语句立即完全终止循环。程序执行继续到循环体之后的第一条语句。
  • continue 语句立即终止当前循环迭代。执行跳转到循环的顶部,并重新评估控制表达式以确定循环是再次执行还是终止。

Python循环之while无限迭代

# break 举例
n = 5
while n > 0:
    n -= 1
    if n == 2:
        break
    print(n)
print('循环结束。')

输出:

4
3
循环结束。

# continue 举例
n = 5
while n > 0:
    n -= 1
    if n == 2:
        continue
    print(n)
print('循环结束。')

输出:

4
3
1
0
循环结束。

else 子句

Python 允许在循环else结束时使用可选子句。

Python循环之while无限迭代

while <布尔计算的表达式>:
    <执行的python语句> # 循环体
else:
    <循环终止后执行语句>

n = 5
while n > 0:
    n -= 1
    print(n)
else:
    print('Loop done.')

输出:

4
3
2
1
0
Loop done.

# 如果有break某些情况下就不会倍执行
n = 5
while n > 0:
    n -= 1
    print(n)
    if n == 2:
        break
else:
    print('循环结束。')

输出:

4
3
2

无限循环

假设编写了一个while理论上永远不会结束的循环。

Python循环之while无限迭代

while True:
    print('真·三國無雙')

真·三國無雙
真·三國無雙
  .
  .
  .
真·三國無雙

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyboardInterrupt

这样的循环只能手动停止。

单实际上也有它的应用,例如循环删除列表中的元素。

list_ = ['真·三國無雙', '真·三國無雙', '真·三國無雙']
while True:
    if not list_ :
        break
    print(list_ .pop(-1))

输出:

真·三國無雙
真·三國無雙
真·三國無雙

可以 break 在循环中指定多个语句。可以通过 break 从几个不同的位置结束循环,而不必在循环头中指定所有终止条件。

while True:
    if <布尔计算的表达式1>:  # 条件判断1
        break
    
    if <布尔计算的表达式2>:  # 条件判断2
        break
    
    if <布尔计算的表达式3>:  # 条件判断3
        break

嵌套while循环

Python 控制结构可以相互嵌套。

if age < 18:
    if gender == 'M':
        print('子供')
    else:
        print('娘')
elif age >= 18 and age < 65:
    if gender == 'M':
        print('父親')
    else:
        print('母親')
else:
    if gender == 'M':
        print('おじいさん')
    else:
        print('祖母')

while循环可以包含在另一个while循环中。

list_ = ['父親', '母親']
while len(list_ ):
    print(list_.pop(0))
    list__ = ['おじいさん', '祖母']
    while len(list__ ):
        print('>', list__.pop(0))

输出:

父親
> おじいさん
> 祖母
母親
> おじいさん
> 祖母

在嵌套循环中找到的 break 语句适用于最近的封闭循环。

while <布尔计算的表达式1>:
    statement
    statement

    while <布尔计算的表达式2>:
        statement
        statement
        break  # 适用于 while <布尔计算的表达式2>: 循环

    break  # 适用于 while <布尔计算的表达式1>: 循环

while循环可以嵌套在 if、elif、else 语句中。

if <布尔计算的表达式1>:
    <python执行语句1>
    while <布尔计算的表达式2>:
        <python执行语句2>
        <python执行语句3>
else:
    while <布尔计算的表达式3>:
        <python执行语句4>
        <python执行语句5>
    <python执行语句6>

while <布尔计算的表达式1>:
    if <布尔计算的表达式2>:
        <python执行语句1>
    elif <布尔计算的表达式3>:
        <python执行语句2>
    else:
        <python执行语句3>
    if <布尔计算的表达式4>:
        <python执行语句4>

单行 while 循环

与 if 语句一样,while 可以在一行中指定循环。也可以用 ;组成多个循环体语句。

n = 5
while n > 0: n -= 1; print(n)

输出:

4
3
2
1
0

两个复合语句组合成简写方式是不可以的。

if True: print('data')
data

while n > 0: n -= 1; if True: print('data')
SyntaxError: invalid syntax

以上就是详解Python中while无限迭代循环方法的详细内容!


Tags in this post...

Python 相关文章推荐
Python中属性和描述符的正确使用
Aug 23 Python
Python中协程用法代码详解
Feb 10 Python
Python cookbook(字符串与文本)针对任意多的分隔符拆分字符串操作示例
Apr 19 Python
Linux下多个Python版本安装教程
Aug 15 Python
对python3.4 字符串转16进制的实例详解
Jun 12 Python
Python实现图片识别加翻译功能
Dec 26 Python
Python中zip()函数的解释和可视化(实例详解)
Feb 16 Python
TFRecord文件查看包含的所有Features代码
Feb 17 Python
解决pycharm安装第三方库失败的问题
May 09 Python
完美解决TensorFlow和Keras大数据量内存溢出的问题
Jul 03 Python
python 爬虫如何正确的使用cookie
Oct 27 Python
分享一个python的aes加密代码
Dec 22 Python
如何Python使用re模块实现okenizer
Apr 30 #Python
如何使用python包中的sched事件调度器
Apr 30 #Python
详解OpenCV获取高动态范围(HDR)成像
详解OpenCV曝光融合
python使用shell脚本创建kafka连接器
Apr 29 #Python
python中pycryto实现数据加密
Apr 29 #Python
Python如何快速找到多个字典中的公共键(key)
Apr 29 #Python
You might like
php开发过程中关于继承的使用方法分享
2011/06/17 PHP
PHP简单选择排序算法实例
2015/01/26 PHP
php打乱数组二维数组多维数组的简单实例
2016/06/17 PHP
PHP如何开启Opcache功能提升程序处理效率
2020/04/27 PHP
javascript HTMLEncode HTMLDecode的完整实例(兼容ie和火狐)
2009/06/02 Javascript
javascript获取select的当前值示例代码(兼容IE/Firefox/Opera/Chrome)
2013/12/17 Javascript
JS调用页面表格导出excel示例代码
2014/03/18 Javascript
Javascript玩转继承(二)
2014/05/08 Javascript
Javascript连接Access数据库完整实例
2015/08/03 Javascript
js实现适用于素材网站的黑色多级菜单导航条效果
2015/08/24 Javascript
javascript中new关键字详解
2015/12/14 Javascript
jquery 属性选择器(匹配具有指定属性的元素)
2016/09/06 Javascript
基于jQuery实现Accordion手风琴自定义插件
2020/10/13 Javascript
javascript 闭包详解及简单实例应用
2016/12/31 Javascript
Vue 2.0 服务端渲染入门介绍
2017/03/29 Javascript
jQuery实现百度登录框的动态切换效果
2017/04/21 jQuery
详解使用Node.js 将txt文件转为Excel文件
2017/07/05 Javascript
详解JS函数stack size计算方法
2018/06/18 Javascript
ES6的Fetch异步请求的实现方法
2018/12/07 Javascript
[01:04:02]DOTA2-DPC中国联赛 正赛 Elephant vs IG BO3 第二场 1月24日
2021/03/11 DOTA
Python获取当前时间的方法
2014/01/14 Python
Python文件操作类操作实例详解
2014/07/11 Python
如何将python中的List转化成dictionary
2016/08/15 Python
python多进程控制学习小结
2018/10/31 Python
详解python-图像处理(映射变换)
2019/03/22 Python
如何在python开发工具PyCharm中搭建QtPy环境(教程详解)
2020/02/04 Python
Keras 快速解决OOM超内存的问题
2020/06/11 Python
html5 figure和figcaption的使用方法
2018/09/10 HTML / CSS
HTML5输入框下拉菜单功能的示例代码
2020/09/08 HTML / CSS
SQL Server 2000数据库的文件有哪些,分别进行描述
2013/03/30 面试题
遗体告别仪式主持词
2014/03/20 职场文书
英语教师自荐信
2014/05/26 职场文书
尊老爱亲美德少年事迹材料
2014/08/14 职场文书
付款证明模板
2015/06/19 职场文书
Nginx 匹配方式
2022/05/15 Servers
win10怎么设置右下角图标不折叠?Win10设置右下角图标不折叠的方法
2022/07/15 数码科技