while outside loop for example espaƱol python loops python-2.7 for-loop break

outside - while break python



Python-`break` fuera de todos los bucles (4)

Esta pregunta ya tiene una respuesta aquí:

Estoy usando múltiples bucles anidados for . En el último ciclo hay una instrucción if . Cuando se evalúa como True todos los bucles for deben detenerse, pero eso no sucede. Solo se break fuera del círculo más interno y continúa. Necesito que todos los bucles se detengan si se encuentra la declaración de break .

Mi código:

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


Debes poner tus loops dentro de una función y luego regresar:

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

El uso de return sale inmediatamente de la función de cierre. En el proceso, todos los bucles se detendrán.


No estoy seguro si esta es la forma más limpia posible de hacerlo, pero podría hacer una verificación de bool en la parte superior de cada ciclo.

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


Puedes presentar una excepción

try: for a in range(5): for b in range(5): if a==b==3: raise StopIteration print b except StopIteration: pass


¿por qué no usar una expresión de generador?

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