7·模块二:控制流与循环入门

While 循环与循环控制

while-loopbreakcontinue

第 7 课:While 循环与循环控制

所属模块: 模块二:控制流与循环 难度: 初学者 (beginner) 标签: while-loopbreakcontinue 上一课: 条件判断(if-elif-else) 下一课: For 循环与迭代器


1. 学习目标

完成本课学习后,你将能够:

  • 理解并使用 while 循环的基本语法来实现重复执行代码块。
  • 运用 break 语句,在满足特定条件时立即终止循环。
  • 运用 continue 语句,跳过循环体中剩余的代码,直接进入下一次循环的条件判断。
  • 识别并避免 由于循环条件设置不当导致的无限循环。

2. 核心概念

什么是循环?

循环,就是让计算机重复执行某段代码,直到某个条件不再满足为止。就像你每天早上起床后重复刷牙这个动作,直到牙齿干净(条件满足)为止。

while 循环:"只要...就..."

while 循环的逻辑非常直观:只要 条件判断为 True,就 一直 执行循环体内的代码。 语法结构:

while 条件表达式:
    # 循环体(当条件为True时重复执行的代码块)

它的执行流程是:

  1. 判断 条件表达式 是否为 True
  2. 如果是,则执行循环体内的所有代码。
  3. 执行完后,再次返回第1步,重新判断条件。
  4. 如果条件为 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. 常见错误

  1. 无限循环(最常见的错误!)

    • 错误代码: 忘记在循环体中更新循环条件变量。
    count = 1
    while count <= 5:
        print(count)
        # 错误:缺少 `count += 1`,导致count永远为1,条件永远为True
    
    • 正确做法: 确保循环体中包含能使条件最终变为 False 的语句。
  2. 混淆 breakcontinue

    • 错误代码: 本想跳过某个值,却写成了终止整个循环。
    # 意图:打印1到5中非3的数字
    num = 1
    while num <= 5:
        if num == 3:
            break  # 错误:这会终止整个循环,导致4和5也不会被打印
        print(num)
        num += 1
    
    • 正确做法: 在此场景下应使用 continue
  3. 在循环外使用 breakcontinue breakcontinue 只能 用在循环体内。在 if 语句或其他非循环结构中使用它们会导致 SyntaxError

  4. 条件表达式逻辑错误 仔细思考条件是"当...时继续循环",还是"当...时停止循环"。

    • "计数到10":while count <= 10
    • "直到猜对":while guess != secret_number (对比示例2的无限循环写法,两种思路均可)

6. 小结

本课我们学习了控制程序重复执行的关键工具:

  • while 循环:根据一个条件表达式来决定是否继续执行。核心三要素:初始化变量、循环条件、更新变量
  • break:用于在满足某个内部条件时,强制终止整个循环。
  • continue:用于跳过当前循环体剩余的语句,直接开始下一次循环。
  • 牢记避免无限循环:务必确保循环条件最终会变为 False
  • 下一课我们将学习另一种更强大的循环——for 循环,它非常适合用于遍历序列(如列表、字符串)。

练习编辑器

python
Loading...

继续学习

完成本课后,建议继续学习下一课「For 循环与迭代器」 以巩固所学知识。