3.4 break 与 continue
break 和 continue 都会改变循环的正常执行流程,但它们的含义不同。
break:直接结束当前循环。continue:跳过本轮迭代(iteration)的剩余代码,开始下一轮循环。
break
当循环中已经完成目标,或者继续循环没有意义时,可以使用 break。
下面的程序判断一个整数是否为素数(prime number)。只要找到一个能整除 n 的数,就可以确认 n 不是素数,不需要再继续检查。
python
import math
n = int(input("请输入一个整数:"))
is_prime = n > 1
for i in range(2, int(math.sqrt(n)) + 1):
if n % i == 0:
is_prime = False
break
if is_prime:
print("%d 是素数" % n)
else:
print("%d 不是素数" % n)一次可能的运行结果:
text
请输入一个整数:17
17 是素数这里不需要检查到 n - 1。如果一个数有大于平方根(square root)的因子,那么它一定也有一个小于平方根的配对因子,所以检查到 sqrt(n) 就够了。
正在加载概念检查...
continue
continue 不会结束整个循环,而是跳过本轮循环中剩下的代码,直接进入下一轮。
下面的程序读取 10 个整数,只计算非负整数的平方和。遇到负数时,本轮直接跳过。
python
n = 10
print("请输入 %d 个整数:" % n)
sum_square = 0
for i in range(n):
num = int(input())
if num < 0:
continue
sum_square += num * num
print("非负整数平方和:%d" % sum_square)一次可能的运行过程:
text
请输入 10 个整数:
5
7
-2
0
4
-4
-9
3
9
5
非负整数平方和:205当 num < 0 时,continue 会跳过 sum_square += num * num,因此负数不会参与计算。
注意
0 不是负数,它的平方是 0,加入结果也不会改变总和。正在加载概念检查...
如何选择
如果你想“整个循环到此为止”,用 break。如果你只是想“这一轮不继续做了,下一轮照常开始”,用 continue。
python
for x in range(1, 6):
if x == 3:
continue
print(x)运行结果:
text
1
2
4
53 被跳过了,但循环没有结束。
正在加载概念检查...
正在加载本节练习...
对比实验
读完 break 和 continue 的含义后,再用下面的组件单步比较:同样遇到 x == 3,continue 只是跳过本轮,而 break 会让整个循环提前结束。
正在加载交互实验...