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线程锁(thread)学习示例
Dec 04 Python
Python原始字符串(raw strings)用法实例
Oct 13 Python
在Python的Django框架中simple-todo工具的简单使用
May 30 Python
Python整型运算之布尔型、标准整型、长整型操作示例
Jul 21 Python
Python实现破解猜数游戏算法示例
Sep 25 Python
如何使用Python进行OCR识别图片中的文字
Apr 01 Python
解决python xx.py文件点击完之后一闪而过的问题
Jun 24 Python
简单了解python装饰器原理及使用方法
Dec 18 Python
对Python 字典元素进行删除的方法
Jul 31 Python
Expected conditions模块使用方法汇总代码解析
Aug 13 Python
Python 实现图片转字符画的示例(静态图片,gif皆可)
Nov 05 Python
python 发送邮件的示例代码(Python2/3都可以直接使用)
Dec 03 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性能的原理介绍
2012/09/05 PHP
分享下页面关键字抓取www.icbase.com站点代码(带asp.net参数的)
2014/01/30 PHP
php中filter_input函数用法分析
2014/11/15 PHP
php操作xml入门之xml基本介绍及xml标签元素
2015/01/23 PHP
Twig模板引擎用法入门教程
2016/01/20 PHP
php 反斜杠处理函数addslashes()和stripslashes()实例详解
2016/12/25 PHP
javascript Math.random()随机数函数
2009/11/04 Javascript
Jquery Ajax学习实例6 向WebService发出请求,返回DataSet(XML) 异步调用
2010/03/18 Javascript
基于jQuery的淡入淡出可自动切换的幻灯插件
2010/08/24 Javascript
Dom在ajax技术中的作用说明
2010/10/25 Javascript
推荐10个超棒的jQuery工具提示插件
2011/10/11 Javascript
jquery中获取元素里某一特定子元素的代码
2014/12/02 Javascript
浅谈jQuery中事情的动态绑定
2017/02/12 Javascript
react的滑动图片验证码组件的示例代码
2019/02/27 Javascript
JavaScript实现轮播图效果代码实例
2019/09/28 Javascript
[46:59]完美世界DOTA2联赛PWL S2 GXR vs Ink 第二场 11.19
2020/11/20 DOTA
python实现html转ubb代码(html2ubb)
2014/07/03 Python
Python中的MongoDB基本操作:连接、查询实例
2015/02/13 Python
总结网络IO模型与select模型的Python实例讲解
2016/06/27 Python
django连接oracle时setting 配置方法
2019/08/29 Python
Python彻底删除文件夹及其子文件方式
2019/12/23 Python
Django 自定义权限管理系统详解(通过中间件认证)
2020/03/11 Python
完美解决python针对hdfs上传和下载的问题
2020/06/05 Python
python利用faker库批量生成测试数据
2020/10/15 Python
农村党支部先进事迹
2014/01/14 职场文书
军训鉴定表自我鉴定
2014/02/13 职场文书
实习单位鉴定评语
2014/04/26 职场文书
跳蚤市场口号
2014/06/13 职场文书
单位未婚证明范本
2014/11/25 职场文书
2014幼儿园卫生保健工作总结
2014/12/05 职场文书
2014年煤矿工人工作总结
2014/12/08 职场文书
和谐家庭事迹材料
2014/12/20 职场文书
社区低保工作总结2015
2015/07/23 职场文书
公司车辆维修管理制度
2015/08/05 职场文书
超市主管竞聘书
2015/09/15 职场文书
企业愿景口号
2015/12/25 职场文书