Python While 循环语句

Python 的 while 循环语句用于在指定条件为 True 时重复执行一段代码块,直到条件变为 False 或通过 break 语句退出循环。它是 Python 中实现循环控制的一种基本结构,适合在循环次数不确定的情况下使用。

基本语法

while condition:
    # 代码块
    # 在条件为 True 时执行
  • condition:一个布尔表达式,决定是否继续循环。
  • 代码块:缩进的代码,在条件为 True 时重复执行。

工作原理

  1. 检查 condition 是否为 True
  2. 如果为 True,执行代码块,然后返回第 1 步。
  3. 如果为 False,退出循环,继续执行后续代码。

示例

1. 基本 while 循环

count = 1
while count <= 5:
    print(f"Count is {count}")
    count += 1

输出

Count is 1
Count is 2
Count is 3
Count is 4
Count is 5

2. 使用 break 退出循环

num = 1
while True:  # 无限循环
    if num > 3:
        break  # 退出循环
    print(num)
    num += 1

输出

1
2
3

3. 使用 continue 跳过本次循环

num = 0
while num < 5:
    num += 1
    if num % 2 == 0:  # 跳过偶数
        continue
    print(f"Odd number: {num}")

输出

Odd number: 1
Odd number: 3
Odd number: 5

4. 使用 else 语句

while 循环可以搭配 else 语句,当循环条件变为 False 时执行 else 块(break 退出时不会执行)。

count = 1
while count <= 3:
    print(f"Count: {count}")
    count += 1
else:
    print("Loop ended")

输出

Count: 1
Count: 2
Count: 3
Loop ended

5. 无限循环(需谨慎)

while True:
    user_input = input("Enter 'quit' to exit: ")
    if user_input == 'quit':
        break
    print(f"You entered: {user_input}")

注意事项

  • 避免死循环:确保循环条件最终会变为 False,否则可能导致程序卡死。例如:
  while True:  # 错误:无退出条件
      print("Infinite loop!")
  • 性能:循环体内的代码应尽量高效,避免不必要的计算。
  • 变量更新:确保条件依赖的变量(如 count)在循环中被正确更新。
  • 调试:使用 print 或调试工具检查循环变量的变化。

常见使用场景

  • 处理未知次数的循环:如读取文件直到结束。
  • 等待用户输入:如交互式程序。
  • 游戏循环:如检测游戏状态直到满足退出条件。
  • 数据处理:如逐行处理数据直到符合某个条件。

与 for 循环的区别

  • while 循环适合条件驱动的循环,次数未知。
  • for 循环适合已知次数或迭代可迭代对象(如列表、字符串)。

扩展示例

计算 1 到 100 的和

total = 0
num = 1
while num <= 100:
    total += num
    num += 1
print(f"Sum: {total}")

输出Sum: 5050

验证用户输入

while True:
    age = input("Enter your age (0-120): ")
    if age.isdigit() and 0 <= int(age) <= 120:
        print(f"Valid age: {age}")
        break
    else:
        print("Invalid input, try again")

总结

Python 的 while 循环简单灵活,适合处理动态条件的循环任务。通过 breakcontinueelse,可以精确控制循环行为。需要注意避免死循环并确保条件逻辑清晰。

如果需要更复杂的示例(如嵌套 while 循环、结合列表操作等)或针对特定场景的代码,请告诉我!

类似文章

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注