在我的代码中,关键字“continue”和“break”给出相同的输出。是什么原因?
第一个代码:
x = 0
while x < 5:
if x == 2:
break
print(x)
x += 1
输出:0 1
第二个代码:
x = 0
while x < 5:
if x == 2:
continue
print(x)
x += 1
输出:0 1
在第一个代码中,我期望相同的输出。在第二个中,我期望输出如下:输出:0 1 3 4
continue
停止循环的当前迭代并立即进入循环的下一次迭代,跳过循环体的其余部分。
在你的while
循环中,身体的其余部分包括声明x += 1
。所以x
永远不会变成3
,它停留在2
。从那时起,if x == 2:
测试总是成功,并且它不断跳过增量,并且一遍又一遍地重复该循环。
在for
循环中,它跳过循环体的其余部分,然后从迭代器中获取它循环的下一个项目。如果您将循环更改为:
for x in range(5):
if x == 2:
continue
print(x)
你会得到你期望的输出。增加x
不是在循环体中完成的,它是由for
语句本身完成的。它会在每次迭代开始时自动发生。所以continue
只跳过print
声明。
python中的continue
关键字告诉程序跳过循环的其余内容并跳转到下一次迭代。
在第二个代码中,您会注意到程序永远不会停止执行。那是因为一旦x == 2
是True
,该程序将被击中continue
然后跳到下一次迭代...再次检查x
再次等于2并且将击中continue
。这是一个无限循环。
break
立即离开循环,continue
停止当前迭代直接开始下一次迭代(它不会离开循环)。
第二个代码示例将永远不会终止,因为continue
重新启动while循环而不增加x
。