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的数是 6continue:跳过本次迭代
continue 不终止整个循环,仅跳过本轮剩余语句并进入下一轮迭代,适用于过滤不符合条件的元素:
for val in "string":
if val == "i":
continue
print(val)
print("末尾")输出:
s
t
r
n
g
末尾字符 i 被跳过,其余字符照常输出,循环仍正常结束。
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
7break 与 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 的配合方式。下一节进入字符串类型及其常用操作。