第 7 课:While 循环与循环控制
所属模块: 模块二:控制流与循环
难度: 初学者 (beginner)
标签: while-loop、break、continue
上一课: 条件判断(if-elif-else)
下一课: For 循环与迭代器
1. 学习目标
完成本课学习后,你将能够:
- 理解并使用
while循环的基本语法来实现重复执行代码块。 - 运用
break语句,在满足特定条件时立即终止循环。 - 运用
continue语句,跳过循环体中剩余的代码,直接进入下一次循环的条件判断。 - 识别并避免 由于循环条件设置不当导致的无限循环。
2. 核心概念
什么是循环?
循环,就是让计算机重复执行某段代码,直到某个条件不再满足为止。就像你每天早上起床后重复刷牙这个动作,直到牙齿干净(条件满足)为止。
while 循环:"只要...就..."
while 循环的逻辑非常直观:只要 条件判断为 True,就 一直 执行循环体内的代码。
语法结构:
while 条件表达式:
# 循环体(当条件为True时重复执行的代码块)
它的执行流程是:
- 判断
条件表达式是否为True。 - 如果是,则执行循环体内的所有代码。
- 执行完后,再次返回第1步,重新判断条件。
- 如果条件为
False,则跳出循环,执行循环后面的代码。
break 语句:"立刻停止!"
break 用于在循环内部立即终止整个循环,无论循环条件是否仍然为 True。当程序遇到 break 时,会直接跳出当前所在的循环,执行循环之后的代码。
就像你在做一个重复性工作时,突然接到了一个紧急电话,你必须立即停下手中的工作去接电话。
continue 语句:"跳过本次,继续下次"
continue 用于跳过本次循环中 continue 语句之后的所有代码,直接回到循环的起始处,进行下一次的条件判断。
它不像 break 那样终止整个循环,而只是"跳过"当前这一次。就像你在洗一篮子苹果,发现一个坏的,于是你跳过这个坏苹果,直接去洗下一个。
3. 代码示例
示例1:基础 while 循环 - 计算1到10的和
# 初始化计数器和累加器
count = 1
total_sum = 0
print("开始计算1到10的和...")
while count <= 10: # 只要count小于等于10,就继续循环
total_sum += count # 将当前的count加到总和上
count += 1 # 更新计数器(非常重要!)
print(f"当前计数: {count - 1}, 当前总和: {total_sum}")
print(f"\n循环结束!1到10的总和是: {total_sum}")
预期输出: 循环会执行10次,依次打印出累加过程,最终输出总和55。
示例2:使用 break - 猜数字游戏(简化版)
secret_number = 7
guess = 0 # 初始化猜的数字
attempts = 0 # 记录尝试次数
print("猜一个1到10之间的数字:")
while True: # 创建一个条件永远为True的循环(无限循环)
guess = int(input("请输入你的猜测: "))
attempts += 1
if guess == secret_number:
print(f"恭喜你,猜对了!数字就是 {secret_number}。")
print(f"你一共猜了 {attempts} 次。")
break # 猜对了,用break跳出无限循环
elif guess < secret_number:
print("太小了,再试一次!")
else:
print("太大了,再试一次!")
print("游戏结束。")
运行逻辑: 程序会一直要求用户输入,直到猜中数字7。猜中时,break 语句被触发,循环立即终止。
示例3:使用 continue - 只打印1到10之间的奇数
num = 0
print("1到10之间的奇数有:")
while num < 10:
num += 1 # 先让num自增1,这样num从1开始
if num % 2 == 0: # 如果num是偶数
continue # 跳过本次循环中后续的打印语句,直接开始下一次循环
print(num, end=' ') # 只有奇数才会执行到这一行
print("\n打印完成。")
预期输出: 1 3 5 7 9
运行逻辑: 当 num 是偶数时,continue 语句会使程序跳过 print(num),直接进入下一次循环的 while num < 10 判断。
4. 实践练习
练习1:基础循环计数
编写一个 while 循环,从 5 开始倒数,每次减1,直到0为止,并在每次循环中打印当前的数字。
预期输出:
5
4
3
2
1
0
练习2:使用 break 实现交互式退出
编写程序,不断询问用户"你喜欢Python编程吗?(yes/no)"。如果用户输入 "no",则使用 break 语句立即退出循环;如果输入 "yes",则打印"太棒了,继续保持!"并继续循环。
示例运行:
你喜欢Python编程吗?(yes/no): yes
太棒了,继续保持!
你喜欢Python编程吗?(yes/no): yes
太棒了,继续保持!
你喜欢Python编程吗?(yes/no): no
程序结束。
练习3:使用 continue 计算总和并跳过特定值
编写程序,计算从1加到20的总和,但是跳过所有能被3整除的数(如3, 6, 9, 12, 15, 18)。
提示: 使用 num % 3 == 0 判断是否能被3整除,并在条件成立时使用 continue。
预期输出: 最终总和应为 144。
5. 常见错误
-
无限循环(最常见的错误!)
- 错误代码: 忘记在循环体中更新循环条件变量。
count = 1 while count <= 5: print(count) # 错误:缺少 `count += 1`,导致count永远为1,条件永远为True- 正确做法: 确保循环体中包含能使条件最终变为
False的语句。
-
混淆
break和continue- 错误代码: 本想跳过某个值,却写成了终止整个循环。
# 意图:打印1到5中非3的数字 num = 1 while num <= 5: if num == 3: break # 错误:这会终止整个循环,导致4和5也不会被打印 print(num) num += 1- 正确做法: 在此场景下应使用
continue。
-
在循环外使用
break或continuebreak和continue只能 用在循环体内。在if语句或其他非循环结构中使用它们会导致SyntaxError。 -
条件表达式逻辑错误 仔细思考条件是"当...时继续循环",还是"当...时停止循环"。
- "计数到10":
while count <= 10 - "直到猜对":
while guess != secret_number(对比示例2的无限循环写法,两种思路均可)
- "计数到10":
6. 小结
本课我们学习了控制程序重复执行的关键工具:
while循环:根据一个条件表达式来决定是否继续执行。核心三要素:初始化变量、循环条件、更新变量。break:用于在满足某个内部条件时,强制终止整个循环。continue:用于跳过当前循环体剩余的语句,直接开始下一次循环。- 牢记避免无限循环:务必确保循环条件最终会变为
False。 - 下一课我们将学习另一种更强大的循环——
for循环,它非常适合用于遍历序列(如列表、字符串)。