详解Python中while无限迭代循环方法

凌晨两点半
凌晨两点半
发布时间:2026-10-16 | 4人浏览过
原创

本文深入解析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无限迭代的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表