第17集:循环控制break和continue

本集学习目标

  • 理解break语句的作用
  • 理解continue语句的作用
  • 掌握break和continue的区别
  • 学会在循环中使用break和continue
  • 通过实际练习掌握循环控制语句

什么是循环控制语句?

循环控制语句用于改变循环的正常执行流程。Python中常用的循环控制语句有:

  • break:立即退出循环
  • continue:跳过本次循环,继续下一次循环

流程对比

正常循环

开始 → 判断条件 → 执行循环体 → 更新变量 → 回到判断条件 → 结束

使用break

开始 → 判断条件 → 执行循环体 → 遇到break → 退出循环 → 结束

使用continue

开始 → 判断条件 → 执行循环体 → 遇到continue → 跳过本次 → 继续下一次

break语句

什么是break?

break用于立即退出循环,不管循环条件是否为True。

示例1:break的基本使用

for i in range(1, 10):
    if i == 5:
        break  # 当i等于5时,退出循环
    print(i)

print("循环结束")

输出

1
2
3
4
循环结束

解释:当i等于5时,执行break,立即退出循环。

示例2:查找元素

numbers = [1, 3, 5, 7, 9]
target = 5

for num in numbers:
    if num == target:
        print(f"找到{target}!")
        break
    print(f"检查{num}...")

输出

检查1...
检查3...
找到5!

示例3:密码验证(最多3次)

correct_password = "123456"
max_attempts = 3

for attempt in range(max_attempts):
    password = input("请输入密码:")

    if password == correct_password:
        print("登录成功!")
        break  # 登录成功,退出循环

    remaining = max_attempts - attempt - 1
    if remaining > 0:
        print(f"密码错误!还有{remaining}次机会")
    else:
        print("密码错误!机会用完")

示例4:在while循环中使用break

count = 0

while True:  # 无限循环
    print(count)
    count += 1

    if count >= 5:
        break  # 当count>=5时退出循环

print("循环结束")

continue语句

什么是continue?

continue用于跳过本次循环,直接进入下一次循环。

示例5:continue的基本使用

for i in range(1, 6):
    if i == 3:
        continue  # 跳过i=3的情况
    print(i)

输出

1
2
4
5

解释:当i等于3时,执行continue,跳过本次循环,不打印3。

示例6:只打印偶数

for i in range(1, 11):
    if i % 2 != 0:
        continue  # 跳过奇数
    print(i)

输出

2
4
6
8
10

示例7:过滤无效数据

numbers = [1, 2, 0, 3, -1, 4, 5]

for num in numbers:
    if num <= 0:  # 过滤掉0和负数
        continue
    print(num)

输出

1
2
3
4
5

示例8:在while循环中使用continue

count = 0

while count < 10:
    count += 1

    if count % 2 == 0:
        continue  # 跳过偶数

    print(count)

输出

1
3
5
7
9

break和continue的区别

特点 break continue
作用 退出循环 跳过本次循环
影响范围 整个循环 本次循环
后续代码 不执行本次循环中break后的代码 不执行本次循环中continue后的代码
循环次数 可能少于预期次数 循环次数不变

示例对比

使用break

for i in range(1, 10):
    if i == 5:
        break
    print(i)

输出:1, 2, 3, 4(共4次循环)

使用continue

for i in range(1, 10):
    if i == 5:
        continue
    print(i)

输出:1, 2, 3, 4, 6, 7, 8, 9(共9次循环,跳过第5次)

实际应用案例

案例1:查找第一个满足条件的元素

numbers = [10, 20, 30, 40, 50]
threshold = 25

for num in numbers:
    if num > threshold:
        print(f"第一个大于{threshold}的数字是:{num}")
        break

输出

第一个大于25的数字是:30

案例2:用户输入验证

while True:
    user_input = input("请输入一个正整数(输入0退出):")

    if user_input == '0':
        print("退出程序")
        break

    try:
        num = int(user_input)
        if num <= 0:
            print("请输入正整数!")
            continue
        print(f"你输入的数字是:{num}")
    except ValueError:
        print("请输入有效的数字!")
        continue

案例3:处理列表中的错误数据

data = ["apple", 42, "banana", "error", "cherry"]

for item in data:
    # 如果是字符串"error",跳过
    if isinstance(item, str) and item == "error":
        print(f"跳过错误数据:{item}")
        continue

    # 如果不是字符串,跳过
    if not isinstance(item, str):
        print(f"跳过非字符串数据:{item}")
        continue

    print(f"处理:{item}")

输出

处理:apple
跳过非字符串数据:42
处理:banana
跳过错误数据:error
处理:cherry

案例4:猜数字游戏(限制次数)

import random

target = random.randint(1, 100)
max_attempts = 7

print("猜数字游戏(1-100),最多猜7次")

for attempt in range(max_attempts):
    guess = int(input(f"第{attempt+1}次猜测:"))

    if guess == target:
        print(f"恭喜你猜对了!用了{attempt+1}次")
        break

    if guess < target:
        print("太小了!")
    else:
        print("太大了!")

    remaining = max_attempts - attempt - 1
    if remaining > 0:
        print(f"还有{remaining}次机会")
else:
    print(f"很遗憾,正确答案是{target}")

嵌套循环中的break和continue

示例9:break在嵌套循环中

for i in range(1, 4):
    print(f"\n外层循环 i = {i}")

    for j in range(1, 4):
        if j == 2:
            print(f"  内层:遇到j=2,退出内层循环")
            break
        print(f"  内层循环 j = {j}")

输出

外层循环 i = 1
  内层循环 j = 1
  内层:遇到j=2,退出内层循环

外层循环 i = 2
  内层循环 j = 1
  内层:遇到j=2,退出内层循环

外层循环 i = 3
  内层循环 j = 1
  内层:遇到j=2,退出内层循环

示例10:continue在嵌套循环中

for i in range(1, 4):
    print(f"\n外层循环 i = {i}")

    for j in range(1, 4):
        if j == 2:
            print(f"  内层:遇到j=2,跳过")
            continue
        print(f"  内层循环 j = {j}")

输出

外层循环 i = 1
  内层循环 j = 1
  内层:遇到j=2,跳过
  内层循环 j = 3

外层循环 i = 2
  内层循环 j = 1
  内层:遇到j=2,跳过
  内层循环 j = 3

外层循环 i = 3
  内层循环 j = 1
  内层:遇到j=2,跳过
  内层循环 j = 3

本集小结

  1. break:立即退出整个循环
  2. continue:跳过本次循环,继续下一次
  3. break影响整个循环,continue只影响本次循环
  4. break和continue可以用于for循环和while循环
  5. 在嵌套循环中,break和continue只影响当前层级的循环
  6. 合理使用break和continue可以提高代码效率
  7. 避免过度使用break和continue,以免影响代码可读性

课后练习

练习1:使用break

找到列表中第一个大于10的数字。

numbers = [1, 5, 8, 12, 15, 20]
# 找到第一个大于10的数字并输出

练习2:使用continue

打印1-10中的所有奇数。

# 打印1-10中的奇数,使用continue跳过偶数

练习3:猜数字

编写猜数字游戏,最多猜5次。

import random
target = random.randint(1, 100)
# 你的代码在这里

练习4:密码验证

编写密码验证程序,正确密码是"python123",最多尝试3次。

# 你的代码在这里

练习5:过滤数据

给定一个列表,过滤掉所有负数和0,只打印正数。

numbers = [1, -2, 0, 3, -4, 5, -6, 7]
# 只打印正数

下集预告

下一集我们将学习第18集:循环嵌套。循环嵌套是指在一个循环中再包含另一个循环,可以实现更复杂的逻辑。

敬请期待!

« 上一篇 for循环基础 下一篇 » 循环嵌套