如何在 Python 中使用 while True?

2025年1月5日 | 阅读 5 分钟

引言

Python 以其简洁和清晰而闻名,提供了多种控制程序流程的结构。另一个值得注意的结构是 'while' 循环,它允许无限重复一段代码,直到某个条件变为真。但有时您可能需要循环无限运行,直到某个条件被触发。这时,'while True' 结构就派上用场了,它提供了一种通过中断来确保持续循环直到完成的替代方法。在本文中,我们将探讨 Python 中的 'while True' 以及如何在不同情况下适当地使用它。

'while True' 的基础知识

'while True' 循环是一种条件无限重复的结构。这意味着该循环内的代码将一直运行,直到它结束或终止循环。循环必须有一个退出机制来终止它,否则程序将永远运行。让我们通过一个简单的例子来深入了解 'while True' 的基本用法。

输出

Enter a number (type 'exit' to end): 2
The square of 2.0 is 4.0
Enter a number (type 'exit' to end): 4
The square of 4.0 is 16.0
Enter a number (type 'exit' to end): 5
The square of 5.0 is 25.0
Enter a number (type 'exit' to end): 78
The square of 78.0 is 6084.0
Enter a number (type 'exit' to end): 25
The square of 25.0 is 625.0
Enter a number (type 'exit' to end): exit

说明

在此示例中,while True 循环会一直持续,直到用户输入 'exit'。它会不断要求用户输入任何数字;每当用户执行此操作时,它都会计算并打印出其平方。通过 break 语句,只有当用户直接输入“exit”时,循环才会终止。

创建菜单驱动程序

'while True' 最常见的用例之一是使用 **通过用户从列表中选择的选项提供的用户界面** 来构建菜单驱动的程序。循环会一直重复,直到用户选择一个终止程序的选项。以下是一个简单的菜单驱动程序的示例:

输出

1. Print Hello
2. Print World
3. Exit
Enter your choice: 1
Hello
1. Print Hello
2. Print World
3. Exit
Enter your choice: 2
World
1. Print Hello
2. Print World
3. Exit
Enter your choice: 3
Exiting the program.

说明

在这种情况下,'while True' 循环会显示一个菜单板,然后获取用户输入,该输入会被考虑在内,并根据用户的选择执行相应的操作。循环一直运行,直到用户选择“Exit”(退出)并从中退出,从而终止整个程序。

实现倒计时器

'while True' 命令的另一个有趣的用法是关于倒计时器。**在这种情况下,循环会一直运行,直到计时器变量达到零**。让我们创建一个简单的倒计时器程序:

输出

Enter countdown duration in seconds: 5
Time remaining: 5seconds
Time remaining: 4seconds
Time remaining: 3seconds
Time remaining: 2seconds
Time remaining: 1seconds
Time's up!

说明

在这种情况下,while True 循环会不断打印剩余的倒计时秒数,并只要 timer 大于零就重复此操作。**'time.sleep(1)'** 函数有助于在循环的每次迭代之间添加一秒的延迟。

处理中断和异常

在使用像 'while True' 这样的无限循环时,可能出现的一个问题是如何以得体的方式处理中断和异常。但是,确保循环可以在没有意外副作用的情况下终止至关重要。一种常见的方法是使用 try-except 块来捕获异常并适当地处理它们。

输出

Enter a number: 10
Result: 1.0
Enter a number: 0
Cannot divide by zero.
Enter a number: 12
Result: 0.8333333333333334

说明

在这种情况下,'while True' 循环接受用户输入进行计算并打印出结果。该循环旨在处理三种类型的异常:**ValueError**(无效输入)、**ZeroDivisionException**(除以零)和 **KeyboardInterrupt**(用户中断,Ctrl+C)。如果发生键盘中断,break 语句会退出循环。

实现有限状态机

**有限状态机 (FSM) 是一种用于设计和描述具有有限状态的系统行为的合适计算模型**。可以使用 Python 中的 while True 结构开发一个简单的有限状态机。让我们看一个交通灯模拟的例子:

输出

Green light. Proceed with caution
Yellow light. Prepare to stop
Red light. Stop

说明

此示例显示了代表正在运行的交通灯模拟的 while True 循环。程序会跳转到各种状态(“绿色”、“黄色”、“红色”),并为每种状态发出消息。'time.sleep' 函数用于模拟每个交通灯状态的持续时间。

结论

在 Python 中,'while True' 结构是构建无限循环的有效方法,这些循环仅在终止时停止执行。掌握 'while True' 的用法可以实现多种功能,包括创建菜单驱动的程序、指定倒计时器、处理中断和异常,以及高效轮询和构建简单的有限状态机。但是,提供 break 语句或异常管理机制至关重要,这样程序才不会卡在无限循环中。与任何编程结构一样,使用 while True 也应经过深思熟虑的设计,并需要考虑您应用程序的特殊需求。