我正在使用多个嵌套的for
循环。在最后一个循环中有一个if
语句。当评估为True
时,所有for
循环应该停止,但这不会发生。它只有break
来自最里面的for
循环,而不是它继续前进。如果遇到break
语句,我需要所有循环停止。
我的代码:
for i in range(1, 1001):
for i2 in range(i, 1001):
for i3 in range(i2, 1001):
if i*i + i2*i2 == i3*i3 and i + i2 + i3 == 1000:
print i*i2*i3
break
答案 0 :(得分:43)
你应该把你的循环放在一个函数中,然后返回:
def myfunc():
for i in range(1, 1001):
for i2 in range(i, 1001):
for i3 in range(i2, 1001):
if i*i + i2*i2 == i3*i3 and i + i2 + i3 == 1000:
print i*i2*i3
return # Exit the function (and stop all of the loops)
myfunc() # Call the function
使用return
会立即退出封闭功能。在此过程中,所有循环都将停止。
答案 1 :(得分:14)
您可以引发例外
try:
for a in range(5):
for b in range(5):
if a==b==3:
raise StopIteration
print b
except StopIteration: pass
答案 2 :(得分:9)
为什么不使用生成器表达式:
def my_iterator()
for i in range(1, 1001):
for i2 in range(i, 1001):
for i3 in range(i2, 1001):
yield i,i2,i3
for i,i2,i3 in my_iterator():
if i*i + i2*i2 == i3*i3 and i + i2 + i3 == 1000:
print i*i2*i3
break
答案 3 :(得分:1)
不确定这是否是最干净的方式,但你可以在每个循环的顶部进行一次bool检查。
do_loop = True
for i in range(1, 1001):
if not do_loop:
break
for i2 in range(i, 1001):
# [Loop code here]
# set do_loop to False to break parent loops