while循环
while循环是Python中非常重要的重复执行代码的方式,它会在条件满足时不断重复执行代码块,就像旋转木马一样一圈又一圈地运行。
什么时候使用while循环?
当你不知道需要循环多少次,但知道在什么条件下应该停止时,while循环是最佳选择!
while循环基本语法
while循环的基本结构非常简单:
while 条件:
# 要重复执行的代码
# 这里可以有多行代码
让我们分解一下:
- while - 关键字,表示开始一个while循环
- 条件 - 这是一个表达式,每次循环前都会被检查
- 冒号(:) - 表示后面是循环体
- 缩进 - 循环体中的代码必须缩进(通常是4个空格)
重要注意事项
在while循环中,必须有改变循环条件的代码,否则循环将永远执行下去,称为"死循环"!
while循环执行过程
理解while循环的执行顺序非常重要:
| 步骤 | 说明 |
|---|---|
| 1 | 检查条件是否为True |
| 2 | 如果为True,执行循环体内的代码 |
| 3 | 执行完循环体后,再次检查条件 |
| 4 | 如果条件仍为True,重复步骤2-3 |
| 5 | 如果条件为False,退出循环,执行后面的代码 |
记忆小技巧
可以把while循环想象成一个严格的守门人:
"当(while)大门开着,我就让你进去;如果门关了,你就不能进来"
while循环实例
让我们通过几个例子来理解while循环:
示例1:计数循环
# 从1数到5
count = 1 # 设置计数器
while count <= 5:
print("计数:", count)
count += 1 # 每次增加1
print("计数完成!")
count = 1 # 设置计数器
while count <= 5:
print("计数:", count)
count += 1 # 每次增加1
print("计数完成!")
输出结果:
计数: 1
计数: 2
计数: 3
计数: 4
计数: 5
计数完成!
计数: 2
计数: 3
计数: 4
计数: 5
计数完成!
示例2:用户输入验证
# 要求用户输入密码
password = "" # 初始为空
correct_password = "123abc" # 正确的密码
while password != correct_password:
password = input("请输入密码: ")
if password != correct_password:
print("密码错误,请重试!")
print("密码正确,欢迎进入系统!")
password = "" # 初始为空
correct_password = "123abc" # 正确的密码
while password != correct_password:
password = input("请输入密码: ")
if password != correct_password:
print("密码错误,请重试!")
print("密码正确,欢迎进入系统!")
这个程序会一直要求输入密码,直到输入正确为止。
示例3:游戏循环
# 简单的猜数字游戏
import random
secret_num = random.randint(1, 10) # 生成1-10的随机数
guess = 0
attempts = 0
print("猜数字游戏!我想了一个1到10之间的数字")
while guess != secret_num:
guess = int(input("你的猜测: "))
attempts += 1
if guess < secret_num:
print("太小了!再试一次")
elif guess > secret_num:
print("太大了!再试一次")
print(f"恭喜!你在{attempts}次尝试后猜对了!")
import random
secret_num = random.randint(1, 10) # 生成1-10的随机数
guess = 0
attempts = 0
print("猜数字游戏!我想了一个1到10之间的数字")
while guess != secret_num:
guess = int(input("你的猜测: "))
attempts += 1
if guess < secret_num:
print("太小了!再试一次")
elif guess > secret_num:
print("太大了!再试一次")
print(f"恭喜!你在{attempts}次尝试后猜对了!")
避免死循环
死循环是while循环中最常见的问题,它会永远执行下去:
# 危险!死循环示例
while True:
print("这个循环永远不会停止!")
while True:
print("这个循环永远不会停止!")
死循环警告
如果你不小心创建了死循环:
- 程序永远不会停止
- 可能会使电脑变慢
- 在某些环境中会崩溃
解决方法:按Ctrl+C可以强制停止Python程序
while循环的特殊控制
在while循环中,你可以使用两个特殊的命令来控制循环:
| 命令 | 说明 | 示例 |
|---|---|---|
| break | 立即退出整个循环 |
while True:
if 条件: break |
| continue | 跳过本次循环剩余代码,进入下一次循环 |
while 条件:
if 特殊情况: continue # 其他代码 |
break和continue示例
# 输入数字,直到输入0停止
while True:
num = int(input("输入一个数字(0结束): "))
# 检查是否结束
if num == 0:
break # 退出循环
# 如果是负数,跳过本次循环
if num < 0:
print("负数被跳过!")
continue
# 处理正数
print(f"{num}的平方是:", num * num)
print("程序结束")
while True:
num = int(input("输入一个数字(0结束): "))
# 检查是否结束
if num == 0:
break # 退出循环
# 如果是负数,跳过本次循环
if num < 0:
print("负数被跳过!")
continue
# 处理正数
print(f"{num}的平方是:", num * num)
print("程序结束")
while循环 vs for循环
理解while循环和for循环的区别非常重要:
| 特点 | while循环 | for循环 |
|---|---|---|
| 使用场景 | 条件不确定时 | 遍历已知序列 |
| 循环次数 | 不确定 | 确定(序列长度) |
| 循环控制 | 条件表达式 | 迭代序列 |
| 典型应用 | 用户输入验证、游戏循环 | 遍历列表、字符串处理 |
选择循环的技巧
问自己:"我知道循环需要执行多少次吗?"
- 如果知道 ➜ 使用for循环
- 如果不知道 ➜ 使用while循环
练习时间
练习1:倒计时程序
编写一个程序,要求用户输入一个正整数,然后从这个数开始倒计时到0。
示例:如果输入5,输出应为:5、4、3、2、1、0
# 获取起始数字
num = int(input("请输入一个正整数: "))
while num >= 0:
print(num)
num -= 1 # 数字减少1
print("倒计时结束!")
num = int(input("请输入一个正整数: "))
while num >= 0:
print(num)
num -= 1 # 数字减少1
print("倒计时结束!")
练习2:数字求和
编写程序,不断要求用户输入数字,直到输入"0"为止,然后计算并打印所有输入数字的总和。
total = 0 # 初始化总和
while True:
num_str = input("输入一个数字(0结束): ")
# 检查是否输入0
if num_str == "0":
break
# 转换为数字并累加
num = float(num_str)
total += num
print(f"所有数字的总和是: {total}")
while True:
num_str = input("输入一个数字(0结束): ")
# 检查是否输入0
if num_str == "0":
break
# 转换为数字并累加
num = float(num_str)
total += num
print(f"所有数字的总和是: {total}")