Python - "pause" de toutes les boucles [dupliquer]
cette question a déjà une réponse ici:
- comment se libérer de boucles multiples en Python? 28 réponses
j'utilise des boucles multiples imbriquées for
. Dans la dernière boucle il y a une déclaration if
. Lorsque évalué à True
tous les for
les boucles devraient s'arrêter, mais cela n'arrive pas. Il seulement break
s de la boucle la plus interne for
, et qu'il continue sur la route. J'ai besoin que toutes les boucles s'arrêtent si la déclaration break
est rencontrée.
mon code:
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
4 réponses
vous devez mettre vos boucles à l'intérieur d'une fonction et ensuite retourner:
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
utilisant return
sort immédiatement de la fonction de fermeture. Dans le processus, toutes les boucles seront arrêtés.
Vous pouvez soulever une exception
try:
for a in range(5):
for b in range(5):
if a==b==3:
raise StopIteration
print b
except StopIteration: pass
pourquoi ne pas utiliser une expression génératrice:
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
pas sûr si c'est la façon la plus propre possible de le faire, mais vous pourriez faire un contrôle de bool au sommet de chaque boucle.
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