break 与 continue 用于改变循环的默认执行顺序:break 立即终止其所在的最内层循环,continue 结束当前迭代并进入下一次条件判断。二者均可用于 for 与 while,并与条件语句配合使用。Java、C 语言等也有同名或相近语义的语句。本节通过字符串遍历等示例说明两者的区别及与循环 else 的关系。

在字符串里找字符

for val in "string":
    if val == "i":
        break
    print(val)

print("末尾")

输出:

s
t
r
末尾

在输出 s、t、r 之后遇到字符 i,break 终止整个 for 循环。循环之后的 print("末尾") 仍会执行。

break:终止整个循环

执行 break 后,立即跳出其所在的最内层 for 或 while。常见用途是在已找到目标或满足退出条件时提前结束迭代:

for i in range(1, 10):
    if i * i > 30:
        print("第一个平方大于30的数是", i)
        break   # 找到了就不再继续

输出:

第一个平方大于30的数是 6

continue:跳过本次迭代

continue 不终止整个循环,仅跳过本轮剩余语句并进入下一轮迭代,适用于过滤不符合条件的元素:

for val in "string":
    if val == "i":
        continue
    print(val)

print("末尾")

输出:

s
t
r
n
g
末尾

字符 i 被跳过,其余字符照常输出,循环仍正常结束。

进入循环满足\n条件?是continue否循环体余下部分下一轮/结束

continue 流程:遇到符合条件的数据跳过本轮,直接进入下一轮

while 里也能用

i = 0
while i < 10:
    i = i + 1
    if i % 2 == 0:
        continue   # 偶数跳过
    if i > 7:
        break      # 大于7就停
    print(i)

输出(1、3、5、7):

1
3
5
7

break 与 continue 的区别

语句作用典型场景
break直接结束整个循环找到结果、输入退出、提前终止
continue跳过本次,继续下一轮过滤非法或不需要的数据

和 for/while 的 else 配合

循环的 else 仅在没有被 break 打断时执行。因此可将未命中时的收尾逻辑放在 else 中:

target = 8
for i in range(1, 6):
    if i == target:
        print("找到了", i)
        break
else:
    print("没找到")   # 1~5 里没有 8,会执行这里

容易混淆的两点

嵌套循环中,break 仅终止最内层循环。若需同时终止外层循环,通常使用标志变量,或将查找逻辑封装为函数并在满足条件时使用 return 退出。

在 while 中使用 continue 时,若计数器更新写在 continue 之后,该更新可能被跳过,导致条件恒为真并形成死循环。应将 i = i + 1 等更新放在可能触发 continue 的路径之前。

小结

嵌套循环中的 break 仅跳出最内层。需要终止外层循环时须借助标志变量或将逻辑封装为函数。while 中与 continue 相关的计数器更新应放在可能跳过语句之前。

本节说明了 break、continue 与循环 else 的配合方式。下一节进入字符串类型及其常用操作。