飞翔飞翔
主页
  • 计算机基础

    • TCP/IP协议
    • Linux命令
  • 数据库

    • SQL教程
  • 编程语言

    • C语言
    • Python2
    • Python3
  • 数据格式

    • JSON教程
  • 工具

    • Markdown指南
  • Git

    • GitFlow
  • Quartz

    • Quartz教程
  • Java

    • Java设计模式
  • 缓存

    • Redis教程
联系
阿里云
主页
  • 计算机基础

    • TCP/IP协议
    • Linux命令
  • 数据库

    • SQL教程
  • 编程语言

    • C语言
    • Python2
    • Python3
  • 数据格式

    • JSON教程
  • 工具

    • Markdown指南
  • Git

    • GitFlow
  • Quartz

    • Quartz教程
  • Java

    • Java设计模式
  • 缓存

    • Redis教程
联系
阿里云
  • 学习路径
  • 第1章 Python简介

    • Python是什么
    • 安装与运行
    • 交互式解释器
    • 注释与编码规范
  • 第2章 变量与数据类型

    • 变量与对象
    • 整数 int
    • 浮点数 float
    • 复数 complex
    • 布尔值 bool
    • 字符串 str
    • 空值 None
    • 类型转换
  • 第3章 运算符与表达式

    • 算术运算符
    • 比较运算符
    • 赋值运算符
    • 逻辑运算符
    • 位运算符
    • 身份与成员运算符
    • 海象运算符
    • 运算符优先级
  • 第4章 流程控制

    • if 语句
    • if-else 语句
    • if-elif-else 语句
    • match-case 语句
    • 条件表达式(三元运算符)
    • while 循环
    • for 循环
    • range 函数
    • break 与 continue
    • 循环的 else 子句
    • pass 语句
  • 第5章 数据结构

    • 列表创建与索引
    • 列表方法
    • 列表推导式
    • 元组
    • 序列解包
    • 集合
    • 字典创建与访问
    • 字典方法
    • 字典推导式
    • range 对象
  • 第6章 函数

    • 定义函数
    • 位置参数与关键字参数
    • 默认参数
    • 可变参数
    • 解包实参
    • 函数返回值
    • lambda 表达式
    • 文档字符串与注解
    • 作用域与命名空间
    • global 与 nonlocal
  • 第7章 模块与包

    • 模块导入
    • 模块搜索路径
    • 包与相对导入
    • 标准库概览
  • 第8章 文件与输入输出

    • 文件读写
    • 上下文管理器
    • 字符串格式化
    • JSON 与 CSV
  • 第9章 面向对象

    • 类与对象
    • 方法
    • 实例变量与类变量
    • 私有变量
    • 继承
    • 多重继承
    • 魔术方法
    • 属性装饰器
    • 数据类 dataclass
  • 第10章 异常处理

    • 语法错误与异常
    • try-except
    • 异常链与 raise
    • 清理操作
    • 自定义异常
  • 第11章 迭代器与生成器

    • 迭代器协议
    • 生成器
    • 生成器表达式
    • 迭代工具
  • 第12章 高级特性

    • 装饰器
    • 函数式编程
  • 第13章 工程实践

    • 测试与调试
    • 代码质量
    • 虚拟环境

break 与 continue

在循环执行过程中,有时需要根据中途出现的条件改变流程:break 用于立即终止整个循环,continue 用于跳过当前轮次的剩余代码,直接进入下一轮迭代。两者都只影响最近的一层循环。

break 语句

break 跳出当前所在的 for 或 while 循环,程序继续执行循环之后的代码:

for n in range(2, 10):
    for x in range(2, n):
        if n % x == 0:
            print(f"{n} = {x} * {n//x}")
            break

上面的代码来自 Python 官方教程,用于寻找 2 到 9 之间的合数。内层循环遍历可能的因数,一旦发现 n 能被 x 整除,立即用 break 终止内层循环,避免不必要的后续检查。输出:

4 = 2 * 2
6 = 2 * 3
8 = 2 * 4
9 = 3 * 3

注意 break 只跳出内层的 for x in range(2, n) 循环,外层循环继续处理下一个 n。

break 在 while 循环中同样有效:

while True:
    command = input("请输入命令(quit 退出):")
    if command == "quit":
        break
    print(f"执行:{command}")

print("程序结束")

continue 语句

continue 结束当前轮次,立即跳转到循环的条件判断(while)或下一次迭代(for):

for num in range(2, 10):
    if num % 2 == 0:
        print(f"发现偶数 {num}")
        continue
    print(f"发现奇数 {num}")

当 num 为偶数时,continue 跳过其后的 print(f"发现奇数..."),直接进入下一轮。输出:

发现偶数 2
发现奇数 3
发现偶数 4
发现奇数 5
发现偶数 6
发现奇数 7
发现偶数 8
发现奇数 9

在 while 循环中使用 continue 时,务必确保循环变量在 continue 之前已更新,否则可能引发死循环:

i = 0
while i < 5:
    if i == 2:
        i += 1  # 必须在 continue 前更新
        continue
    print(i)
    i += 1

如果忘记在 if i == 2 分支里写 i += 1,continue 会跳过末尾的更新,导致 i 永远为 2,陷入死循环。

嵌套循环中的行为

break 和 continue 只作用于最近的一层循环,不会跨层影响:

for i in range(3):
    for j in range(3):
        if j == 1:
            break  # 只跳出内层 j 循环
        print(f"i={i}, j={j}")

输出:

i=0, j=0
i=1, j=0
i=2, j=0

每次 j 达到 1 时,内层循环终止,但外层 i 循环继续。如果需要从多层循环中一次性跳出,可以使用标志变量或封装为函数并用 return:

def find_pair():
    for i in range(10):
        for j in range(10):
            if i * j == 15:
                print(f"找到:{i} * {j} = 15")
                return  # 直接退出整个函数

find_pair()

Python 没有 break 2 或标签跳转语法,return 和异常是跳出多层循环的常用手段。

break 与 else 子句的关系

循环的 else 子句与 break 密切相关:如果循环被 break 终止,else 不会执行;只有循环自然结束时,else 才运行。详见《循环的 else 子句》文档。

for n in range(2, 10):
    for x in range(2, n):
        if n % x == 0:
            break
    else:
        print(f"{n} 是质数")

这里的 else 属于内层 for 循环。当内层循环没有被 break 中断(即未找到因数)时,else 执行,报告质数。

使用场景对比

场景使用 break使用 continue
找到目标后无需继续✅❌
跳过不符合条件的元素❌✅
提前结束无限等待✅❌
过滤并处理剩余元素❌✅

break 的典型场景:搜索、查找、验证——一旦满足条件,任务完成,无需继续。

target = 7
found = False

for i in range(100):
    if i == target:
        found = True
        break

print("找到" if found else "未找到")

continue 的典型场景:批量处理中的过滤——某些元素不符合要求,跳过即可,其余继续处理。

scores = [85, -1, 92, 0, 78]

for s in scores:
    if s < 0:
        continue  # 跳过无效分数
    print(f"有效成绩:{s}")

常见错误

在循环外使用 break 或 continue:

if x > 0:
    break  # SyntaxError: 'break' outside loop

break 和 continue 只能出现在 for 或 while 循环体内。

混淆 break 与 continue 的效果:

# 本想跳过偶数,却错误地终止了循环
for i in range(10):
    if i % 2 == 0:
        break  # 错误:循环在 i=0 时就结束了
    print(i)

正确做法应使用 continue。

break 和 continue 是精细控制循环流程的两个关键字,掌握它们的作用范围和与 else 子句的交互,能够编写出既高效又清晰的迭代逻辑。

上一页
range 函数
下一页
循环的 else 子句