Python While 循环

2025年3月24日 | 阅读 9 分钟

Python 的 while 循环用于在给定条件保持为 True 的情况下重复执行一段代码。当迭代次数事先未知时,它很有用。

语法

while 循环首先评估指定的条件表达式。如果条件为 True,则执行 while 循环的语句。当整个代码块执行完毕后,会重新检查条件。此过程一直重复,直到条件表达式返回 False。

Python While Loops

让我们看一个简单的 Python while 循环的例子。

示例

立即执行

输出

0 Hello
1 Hello
2 Hello
3 Hello
4 Hello

在上面的示例中,我们将变量 counter 初始化为 0。然后我们进入一个 while 循环,该循环执行代码块,只要 counter 小于 5。在循环内,我们打印 counter 的当前值,后跟“Hello”。每次迭代后,counter 增加 1。一旦 counter 达到 5,条件 counter < 5 就变为 False,导致循环终止。

Python 中 while 循环的流程图

以下流程图表示“while”循环的工作原理

Python While Loops

步骤 1: 程序开始。

步骤 2: while 循环检查指定的条件表达式是True还是False

  • 如果为True,则继续执行循环体。
  • 如果为False,则退出循环并移至程序的下一部分。

步骤 3: 如果条件为 True,则执行循环内的语句。

步骤 4: 修改控制循环的变量(例如,增加计数器)。

步骤 5: 返回到步骤 2 并重新评估条件。

步骤 6: 一旦条件变为 False,它将退出循环并继续执行程序的其余部分。

注意

需要缩进来定义 while 循环内的代码块。不正确或错误的缩进可能导致语法错误或逻辑错误(如无限循环)。

在 Python 中,任何非零数字都被解释为布尔值 True。False 被解释为 None 和 0。

Python while 循环的一些示例

现在我们来看一些 Python 中 while 循环的基本示例。

使用 while 循环查找可被 5 或 7 整除的数字

在下面的示例中,我们将演示如何使用 Python 中的 while 循环查找 1 到 50 之间可被 5 或 7 整除的数字。

示例

立即执行

输出

5 7 10 14 15 20 21 25 28 30 35 40 42 45 49

使用 while 循环查找平方和

在下面的示例中,我们将演示如何使用 Python 中的 while 循环计算前 15 个自然数的平方和。

示例

立即执行

输出

The sum of squares is 1240

使用 While 循环检查素数

在下面的示例中,我们将演示如何使用 Python 中的 while 循环检查给定数字是否为素数。

示例

立即执行

输出

34 is not a PRIME number
12 is not a PRIME number
54 is not a PRIME number
23 is a PRIME number
75 is not a PRIME number
34 is not a PRIME number
11 is a PRIME number

使用 While 循环检查 阿姆斯特朗数

在下面的示例中,我们将演示如何使用 while 循环检查给定整数是否为阿姆斯特朗数。

示例

立即执行

输出

现在,我们在 Python 中编译上述代码,并在成功编译后运行它。然后下面是输出:

342
It is not an Armstrong number.

使用 While 循环创建乘法表

在此示例中,我们将演示如何使用 Python 中的 while 循环为给定数字创建乘法表。

示例

立即执行

输出

The Multiplication Table of:  21
21 x 1 = 21
21 x 2 = 42
21 x 3 = 63
21 x 4 = 84
21 x 5 = 105
21 x 6 = 126
21 x 7 = 147
21 x 8 = 168
21 x 9 = 189
21 x 10 = 210

Python 中的无限 while 循环

在这种情况下,条件的 value 始终为 True。因此,循环体将无限运行,直到内存耗尽。

循环控制语句会改变执行的正常顺序。当执行离开作用域时,在该作用域中创建的所有自动对象都将被销毁。Python 支持以下控制语句。

Python while 循环的循环控制语句

现在我们将研究 Python 的 while 循环中使用的各种循环控制语句。

1. break 语句

break 语句会立即终止 while 循环,而不管条件如何。

示例:当计数器达到 3 时停止循环。

示例

立即执行

输出

Counter is: 0
Counter is: 1
Counter is: 2
Counter is: 3
Breaking the loop at 4

在上面的示例中,一旦计数器达到 4,循环就会停止,即使原始条件是 counter < 8。

2. continue 语句

continue 语句会跳过当前迭代,并移至下一个迭代,而无需执行循环中剩余的代码。

示例:当计数器为 2 时跳过打印。

示例

立即执行

输出

Counter is: 1
Counter is: 2
Counter is: 3
Counter is: 5
Counter is: 6
Counter is: 7
Counter is: 8

在上面的示例中,当 counter 值为 4 时,循环会跳过 print 语句;但是,它会继续执行后面的代码。

3. pass 语句

pass 语句充当占位符,不起任何作用。当语法上需要循环,但不需要立即执行功能时,它很有用。

示例:在循环中使用 pass。

示例

立即执行

输出

Counter is: 0
Counter is: 1
Counter is: 2
Counter is: 3
Counter is: 4
Counter is: 5
Counter is: 6
Counter is: 7

在此示例中,pass 语句确保在开发代码时 Python 不会抛出错误。

4. else 与 while 循环

当循环正常完成(没有 break 语句)后,会执行 else 块。

示例:循环完成后打印一条消息。

输出

Counter is: 0
Counter is: 1
Counter is: 2
Counter is: 3
Counter is: 4
Counter is: 5
Counter is: 6
Counter is: 7
Loop completed successfully!

在上面的示例中,只有当循环没有被 break 终止时,else 块才会运行。

示例:如果使用 break,则会跳过 else 块。

示例

立即执行

输出

Counter is: 0
Counter is: 1
Counter is: 2
Counter is: 3
Counter is: 4

在此示例中,由于 break 语句提前终止了循环,因此 else 块不会执行。

Python while 循环的优点

1. 灵活执行

当迭代次数事先未知时,while 循环非常合适,因为它只要条件为 True 就会运行。

2. 对用户驱动型程序有效

当循环的持续时间由动态条件或用户输入决定时(例如,等待用户输入)很有帮助。

3. 减少代码重复

通过快速处理多次迭代,while 循环消除了编写重复代码的需要,使代码更清晰,更易于维护。

4. 允许无限循环

如果管理得当,使用 True 的无限循环在服务器、实时监控和后台进程等应用程序中可能很有用。

5. 利用条件逻辑

由于循环是动态基于条件运行的,因此可以轻松地将其与逻辑条件结合起来控制程序流。

Python While 循环的缺点

1. 无限循环的风险

如果循环条件永远不会变为 False,程序可能会陷入无限循环,导致程序冻结或 CPU 利用率过高。

2. 条件处理必须手动完成

与自动迭代范围或序列的循环相比,while 循环需要手动管理条件,这增加了出错的可能性。

3. 可读性较低

与 for 循环相比,while 循环有时更难阅读和调试,尤其是当涉及复杂条件时。

4. 性能开销

与 for 循环等更结构化的循环相比,如果 while 循环没有得到适当的优化,它可能会通过导致不必要的迭代来降低性能。

5. break 和 continue 可能会令人困惑。

如果不在 while 循环内小心使用 break 和 continue 语句,可能会使代码更难阅读和调试。

确保循环条件最终变为 False,并小心处理 break 和 continue 语句对于有效地使用 while 循环至关重要。当正确使用时,while 循环是一种基本的编程工具,可以提高各种应用程序的灵活性和效率。

结论

总而言之,我们可以得出结论:Python 的 while 循环是一种灵活的控制结构,它允许根据条件重复执行代码。它非常适合用户驱动的编程、实时监控和动态条件循环,因为它在迭代次数不固定时特别有用。另一方面,对 while 循环的误用可能导致可读性问题、性能低下和无限循环。

Python While 循环 - 选择题

1. Python 中 while 循环的正确语法是什么?

  1. while count < 5
  2. while (count < 5)
  3. while {count < 5}
  4. while [count < 5]
 

答案: A) while count < 5


2. 以下代码的输出是什么?

  1. 1 2 3 4 5
  2. 1 2 3 4
  3. 1 1 1 1
  4. 无输出
 

答案: B) 1 2 3 4


3. 如果 while 循环中的条件永远不会变为 False,会发生什么?

  1. 循环运行一次然后停止。
  2. Python 抛出错误。
  3. 循环将无限运行(无限循环)。
  4. 循环运行固定次数。
 

答案: C) 循环将无限运行(无限循环)。


4. 这段代码的输出是什么?

  1. 3 2 1
  2. 完成
  3. 3 2 1 0 Done
  4. 3 2 1 Done
 

答案: D) 3 2 1 Done


5. 哪个循环控制语句用于跳过当前迭代并移至下一个迭代?

  1. break
  2. continue
  3. pass
  4. stop
 

答案: B) continue


下一个主题Python continue