Python - "break" из всех циклов
Я использую несколько вложенных циклов 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
Ответы
Ответ 1
Вы должны поместить свои петли внутри функции, а затем вернуться:
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
, немедленно выходит из закрывающей функции. При этом все циклы будут остановлены.
Ответ 2
Вы можете создать исключение
try:
for a in range(5):
for b in range(5):
if a==b==3:
raise StopIteration
print b
except StopIteration: pass
Ответ 3
почему бы не использовать выражение генератора:
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
Ответ 4
Не уверен, что это самый чистый способ сделать это, но вы можете сделать проверку 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