跳到主要内容

Python While循环

什么是While循环?

While循环是Python中的一个控制流语句,它允许我们重复执行一段代码,只要给定的条件保持为真。当我们不确定需要循环多少次,而是希望根据特定条件来决定循环的终止时,While循环特别有用。

While循环的基本结构如下:

python
while 条件:
# 当条件为真时执行的代码块

只要条件评估为True,循环内的代码就会一直执行。一旦条件变为False,程序将继续执行循环后的代码。

While循环的基本语法

让我们来看一个简单的例子:

python
# 基本while循环示例
count = 0
while count < 5:
print(f"当前计数:{count}")
count += 1 # 增加count的值

输出:

当前计数:0
当前计数:1
当前计数:2
当前计数:3
当前计数:4

在这个例子中:

  1. 我们初始化了一个变量count为0
  2. While循环会检查条件count < 5
  3. 如果条件为真,执行循环体内的代码
  4. 循环体内我们打印当前计数值,并将count增加1
  5. count等于5时,条件count < 5变为假,循环终止
警告

如果你不修改用于条件检查的变量或状态,可能会导致无限循环。例如,如果上面的例子中去掉了count += 1这一行,循环将永远不会结束!

While循环的流程控制

break语句

break语句用于立即退出循环,不再执行循环中的后续代码:

python
# 使用break提前退出循环
count = 0
while count < 10:
print(f"当前计数:{count}")
if count == 5:
print("达到5,退出循环")
break # 立即退出循环
count += 1

输出:

当前计数:0
当前计数:1
当前计数:2
当前计数:3
当前计数:4
当前计数:5
达到5,退出循环

continue语句

continue语句用于跳过当前循环的剩余部分,直接进入下一次循环:

python
# 使用continue跳过某些迭代
count = 0
while count < 5:
count += 1
if count == 3:
print("跳过3")
continue # 跳过当前循环的剩余部分
print(f"当前计数:{count}")

输出:

当前计数:1
当前计数:2
跳过3
当前计数:4
当前计数:5

else子句

Python的while循环可以有一个可选的else子句,它会在循环条件变为false时执行(注意:如果循环被break语句终止,则else子句不会执行):

python
# 带else子句的while循环
count = 0
while count < 3:
print(f"当前计数:{count}")
count += 1
else:
print("循环正常结束")

输出:

当前计数:0
当前计数:1
当前计数:2
循环正常结束

break语句结合:

python
# else子句与break的交互
count = 0
while count < 3:
print(f"当前计数:{count}")
if count == 1:
print("提前退出")
break
count += 1
else:
print("这条消息不会显示,因为循环被break终止了")

输出:

当前计数:0
当前计数:1
提前退出

无限循环

有时我们需要创建一个持续运行的循环,直到满足某个特定条件。这被称为无限循环,可以通过while True实现:

python
# 无限循环示例
count = 0
while True:
print(f"当前计数:{count}")
count += 1
if count >= 5:
print("达到5,退出循环")
break # 必须使用break来退出无限循环

输出:

当前计数:0
当前计数:1
当前计数:2
当前计数:3
当前计数:4
达到5,退出循环
注意

创建无限循环时,务必确保有某种方式可以退出循环(通常使用break语句),否则程序将永远运行下去。

嵌套While循环

While循环可以嵌套在其他循环内:

python
# 嵌套while循环示例
outer_count = 1
while outer_count <= 3:
print(f"外层循环:{outer_count}")
inner_count = 1
while inner_count <= 2:
print(f" 内层循环:{inner_count}")
inner_count += 1
outer_count += 1

输出:

外层循环:1
内层循环:1
内层循环:2
外层循环:2
内层循环:1
内层循环:2
外层循环:3
内层循环:1
内层循环:2

实际应用案例

案例1:猜数字游戏

以下是一个简单的猜数字游戏,展示了while循环的实际应用:

python
import random

# 生成一个1到100之间的随机数
secret_number = random.randint(1, 100)
attempts = 0
max_attempts = 10

print("欢迎来到猜数字游戏!")
print(f"我想了一个1到100之间的数字,你有{max_attempts}次机会猜出它。")

while attempts < max_attempts:
try:
guess = int(input("请猜一个数字: "))
attempts += 1

if guess < secret_number:
print("太小了!再试一次。")
elif guess > secret_number:
print("太大了!再试一次。")
else:
print(f"恭喜你!你用了{attempts}次猜中了数字{secret_number}!")
break

print(f"你还剩{max_attempts - attempts}次机会。")

except ValueError:
print("请输入有效的数字!")

if attempts == max_attempts and guess != secret_number:
print(f"对不起,你用完了所有{max_attempts}次机会。正确答案是{secret_number}。")

案例2:简单的菜单系统

以下是一个使用while循环实现的简单菜单系统:

python
def display_menu():
print("\n==== 简易计算器 ====")
print("1. 加法")
print("2. 减法")
print("3. 乘法")
print("4. 除法")
print("0. 退出")
print("==================")

running = True
while running:
display_menu()
choice = input("请输入你的选择 (0-4): ")

if choice == '0':
print("谢谢使用!再见!")
running = False
elif choice in ['1', '2', '3', '4']:
num1 = float(input("输入第一个数字: "))
num2 = float(input("输入第二个数字: "))

if choice == '1':
print(f"{num1} + {num2} = {num1 + num2}")
elif choice == '2':
print(f"{num1} - {num2} = {num1 - num2}")
elif choice == '3':
print(f"{num1} × {num2} = {num1 * num2}")
elif choice == '4':
if num2 == 0:
print("错误:除数不能为零!")
else:
print(f"{num1} ÷ {num2} = {num1 / num2}")
else:
print("无效选择!请输入0到4之间的数字。")

案例3:数据验证

使用while循环进行输入验证:

python
# 验证用户年龄输入
while True:
age_input = input("请输入你的年龄(1-120): ")

if age_input.isdigit():
age = int(age_input)
if 1 <= age <= 120:
print(f"谢谢!你的年龄是{age}岁。")
break
else:
print("年龄必须在1到120之间。请重新输入。")
else:
print("请输入有效的数字。")

While循环 vs For循环

在Python中,我们有两种主要的循环结构:while循环和for循环。它们的使用场景有所不同:

  • While循环:当你不确定需要循环多少次,但知道循环应该在什么条件下停止时使用。
  • For循环:当你想遍历一个序列(如列表、元组、字典、集合或字符串)或已知确切的循环次数时使用。
python
# 使用while循环遍历列表
fruits = ['苹果', '香蕉', '橙子', '葡萄']
i = 0
while i < len(fruits):
print(fruits[i])
i += 1

# 同样的操作使用for循环
for fruit in fruits:
print(fruit)

两种方法都能达到相同的结果,但for循环在这种情况下更简洁。然而,while循环在需要根据条件执行循环时更灵活。

总结

While循环是Python中一个强大的控制流工具,特别适用于需要根据条件重复执行代码块的情况。关键点回顾:

  • While循环在条件为真时重复执行代码块
  • 使用break可以提前退出循环
  • 使用continue可以跳过当前迭代的剩余部分
  • 可以给while循环添加else子句,它会在循环正常结束(不是通过break)时执行
  • 创建无限循环使用while True,但必须有退出机制
  • While循环可以嵌套使用

掌握while循环将帮助你编写更灵活、强大的Python程序,特别是在处理需要条件控制的重复任务时。

练习

为了巩固你的理解,尝试完成以下练习:

  1. 编写一个程序,使用while循环计算1到n的总和。
  2. 创建一个倒计时程序,从10倒数到1,然后打印"发射!"。
  3. 使用while循环实现一个简单的密码验证系统,用户有3次机会输入正确密码。
  4. 编写一个程序,使用嵌套while循环打印一个乘法表(1到10)。
  5. 编写一个程序,使用while循环找出一个数字列表中的最大值。
提示

学习编程最有效的方法是实践!尝试变化这些例子,添加新功能或修改现有代码,以便更好地理解while循环的工作原理。