详解Python中while无限迭代循环方法
本文深入解析Python中的while循环机制,涵盖基础语法、控制表达式评估、break与continue语句的区别及应用。重点讲解while-else子句的执行逻辑、无限循环(while True)的实际应用场景,以及嵌套循环中break的作用域和单行循环的写法限制,帮助开发者掌握Python循环控制的细节与最佳实践。
前言
Python 提供了 while 和 for 两种循环语句用于处理重复任务。尽管 for 语句适用于已知迭代次数的场景,但 while 语句则属于“直到满足特定条件”类型的循环机制。
在无限迭代场景中,while 循环的执行次数并非预先设定。相反,只要满足条件表达式指定的逻辑,代码块就会持续重复执行。
相比之下,使用 for 语句定义迭代时,循环体执行的次数在循环启动前就已经明确指定。
除了 while 语句具备的一般特性外,Python 也有其自身规范,例如对 do-while 语句的支持较为有限。循环处理是编程中不可或缺的基本语法。
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 语句会立即终止当前的循环迭代。执行流跳转到循环顶部,并重新评估控制表达式,以决定是再次执行循环还是终止循环。

# 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 子句。

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 循环。

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无限迭代循环方法的详细内容,更多关于Python while无限迭代的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









