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模拟登陆类
Mar 29 Python
仅用50行代码实现一个Python编写的计算器的教程
Apr 17 Python
在Python的Tornado框架中实现简单的在线代理的教程
May 02 Python
浅谈Python中数据解析
May 05 Python
python matplotlib中文显示参数设置解析
Dec 15 Python
python中数组和矩阵乘法及使用总结(推荐)
May 18 Python
网易2016研发工程师编程题 奖学金(python)
Jun 19 Python
django 简单实现登录验证给你
Nov 06 Python
浅谈pytorch、cuda、python的版本对齐问题
Jan 15 Python
使用Python 自动生成 Word 文档的教程
Feb 13 Python
python用opencv 图像傅里叶变换
Jan 04 Python
Python竟然能剪辑视频
May 25 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设计模式中的工厂模式
2008/06/12 PHP
php操作SVN版本服务器类代码
2011/11/27 PHP
php使用pack处理二进制文件的方法
2014/07/03 PHP
打开超链需要“确认”对话框的方法
2007/03/08 Javascript
JSON 和 JavaScript eval使用说明
2010/06/13 Javascript
jqPlot 基于jquery的画图插件
2011/04/26 Javascript
5秒后跳转效果(setInterval/SetTimeOut)
2013/05/03 Javascript
js实现字符串的16进制编码不加密
2014/04/25 Javascript
javascript动态创建及删除元素的方法
2014/12/22 Javascript
jQuery实现Tab选项卡切换效果简单演示
2015/11/23 Javascript
js与jQuery实现checkbox复选框全选/全不选的方法
2016/01/05 Javascript
在Docker快速部署Node.js应用的详细步骤
2016/09/02 Javascript
AngularJs Understanding the Controller Component
2016/09/02 Javascript
浅谈Angular.js中使用$watch监听模型变化
2017/01/10 Javascript
Bootstrap实现各种进度条样式详解
2017/04/13 Javascript
Angular.js项目中使用gulp实现自动化构建以及压缩打包详解
2017/07/19 Javascript
Layui实现数据表格默认全部显示(不要分页)
2019/10/26 Javascript
vue2路由方式--嵌套路由实现方法分析
2020/03/06 Javascript
Vue-cli4 配置 element-ui 按需引入操作
2020/09/11 Javascript
vue 全局封装loading加载教程(全局监听)
2020/11/05 Javascript
[49:42]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#2Secret VS EG第一局
2016/03/04 DOTA
[00:29]2019完美世界全国高校联赛(秋季赛)总决赛海口落幕
2019/12/10 DOTA
Python入门篇之正则表达式
2014/10/20 Python
实例说明Python中比较运算符的使用
2015/05/13 Python
python实现Dijkstra算法的最短路径问题
2019/06/21 Python
关于PyTorch源码解读之torchvision.models
2019/08/17 Python
Python二元赋值实用技巧解析
2019/10/25 Python
Python爬虫爬取微博热搜保存为 Markdown 文件的源码
2021/02/22 Python
利用css3制作3D样式按钮实现代码
2013/03/18 HTML / CSS
ECOSUSI官网:女式皮革背包
2019/09/27 全球购物
JAVA中的关键字有什么特点
2014/03/07 面试题
兽医医药专业求职信
2014/07/27 职场文书
超市工作总结范文2014
2014/12/19 职场文书
工作表现证明
2015/06/15 职场文书
小学英语教学经验交流材料
2015/11/02 职场文书
Vue操作Storage本地化存储
2022/04/29 Vue.js