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之开始真正编程
Sep 12 Python
Python实现比较两个列表(list)范围
Jun 12 Python
Python中的字典与成员运算符初步探究
Oct 13 Python
基于Python如何使用AIML搭建聊天机器人
Jan 27 Python
Python 详解基本语法_函数_返回值
Jan 22 Python
Python基于回溯法子集树模板实现8皇后问题
Sep 01 Python
Numpy数据类型转换astype,dtype的方法
Jun 09 Python
python+opencv+caffe+摄像头做目标检测的实例代码
Aug 03 Python
使用Django实现把两个模型类的数据聚合在一起
Mar 28 Python
python实现人像动漫化的示例代码
May 17 Python
python使用matplotlib:subplot绘制多个子图的示例
Sep 24 Python
把Anaconda中的环境导入到Pycharm里面的方法步骤
Oct 30 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
ie6 动态缩略图不显示的原因
2009/06/21 PHP
php checkbox复选框值的获取与checkbox默认值输出方法
2010/05/15 PHP
PHP实现的简单网络硬盘
2015/07/29 PHP
使用javascript访问XML数据的实例
2006/12/27 Javascript
js parsefloat parseint 转换函数
2010/01/21 Javascript
js 键盘记录实现(兼容FireFox和IE)
2010/02/07 Javascript
jquery实现适用于门户站的导航下拉菜单效果代码
2015/08/24 Javascript
浅谈Javascript中Object与Function对象
2015/09/26 Javascript
JavaScript实现自动生成网页元素功能(按钮、文本等)
2015/11/21 Javascript
jquery把int类型转换成字符串类型的方法
2016/10/07 Javascript
js前端解决跨域问题的8种方案(最新最全)
2016/11/18 Javascript
基于jquery二维码生成插件qrcode
2017/01/07 Javascript
浅谈mint-ui 填坑之路
2017/11/06 Javascript
vue轮播图插件vue-concise-slider的使用
2018/03/13 Javascript
vue2.0+koa2+mongodb实现注册登录
2018/04/10 Javascript
基于ssm框架实现layui分页效果
2019/07/27 Javascript
[01:14]2019完美世界城市挑战赛(秋季赛)全国总决赛精彩花絮
2020/01/08 DOTA
python使用xlrd实现检索excel中某列含有指定字符串记录的方法
2015/05/09 Python
python使用正则表达式提取网页URL的方法
2015/05/26 Python
我用Python抓取了7000 多本电子书案例详解
2019/03/25 Python
python Django里CSRF 对应策略详解
2019/08/05 Python
对django 模型 unique together的示例讲解
2019/08/06 Python
Python统计分析模块statistics用法示例
2019/09/06 Python
django框架ModelForm组件用法详解
2019/12/11 Python
Python实现结构体代码实例
2020/02/10 Python
Python函数参数分类原理详解
2020/05/28 Python
python如何发送带有附件、正文为HTML的邮件
2021/02/27 Python
Canvas中设置width与height的问题浅析
2018/11/01 HTML / CSS
凌阳科技股份有限公司C++程序员面试题笔试题
2014/11/20 面试题
铁路工务反思材料
2014/02/07 职场文书
升学宴演讲稿
2014/09/01 职场文书
党课心得体会范文
2014/09/09 职场文书
违反单位工作制度检讨书
2014/10/25 职场文书
给女朋友道歉的话大全
2015/01/20 职场文书
给校长的建议书作文500字
2015/09/14 职场文书
Win10多屏显示如何设置?Win10电脑多屏显示设置操作方法
2022/07/07 数码科技