Python Language Pause et continuer dans les boucles


Exemple

déclaration de break

Lorsqu'une instruction break s'exécute dans une boucle, le flux de contrôle "se casse" immédiatement de la boucle:

i = 0
while i < 7:
    print(i)
    if i == 4:
        print("Breaking from loop")
        break
    i += 1

La condition conditionnelle ne sera pas évaluée après l'exécution de l'instruction break . Notez que les instructions break ne sont autorisées qu'à l' intérieur des boucles , syntaxiquement. Une instruction break dans une fonction ne peut pas être utilisée pour mettre fin aux boucles appelées cette fonction.

L'exécution de la commande suivante imprime chaque chiffre jusqu'au numéro 4 lorsque l'instruction de break est remplie et que la boucle s'arrête:

0
1
2
3
4
Breaking from loop

break instructions break peuvent également être utilisées à l'intérieur for boucles, l'autre construction en boucle fournie par Python:

for i in (0, 1, 2, 3, 4):
    print(i)
    if i == 2:
        break

L'exécution de cette boucle imprime maintenant:

0
1
2

Notez que 3 et 4 ne sont pas imprimés depuis la fin de la boucle.

Si une boucle a une clause else , elle ne s'exécute pas lorsque la boucle est terminée par une instruction break .

continue déclaration

Une instruction continue passera à la prochaine itération de la boucle en contournant le reste du bloc en cours mais en continuant la boucle. Comme avec break , continue ne peut apparaître qu'à l'intérieur des boucles:

for i in (0, 1, 2, 3, 4, 5):
    if i == 2 or i == 4:
        continue
    print(i)

0
1
3
5

Notez que 2 et 4 ne sont pas imprimés, c'est parce que continue va à l'itération suivante au lieu de continuer à print(i) quand i == 2 ou i == 4 .

Boucles imbriquées

break and continue ne fonctionne que sur un seul niveau de boucle. L'exemple suivant ne sortir de l'intérieur for la boucle, et non l'extérieur while boucle:

while True:
    for i in range(1,5):
        if i == 2:
            break    # Will only break out of the inner loop!

Python n'a pas la capacité de sortir de plusieurs niveaux de boucle à la fois - si ce comportement est souhaité, le remaniement d'une ou de plusieurs boucles dans une fonction et le remplacement de la break avec le return peuvent être la solution.

Utiliser le return d'une fonction comme une break

L' instruction return quitte une fonction sans exécuter le code qui suit.

Si vous avez une boucle dans une fonction, utiliser return depuis l'intérieur de cette boucle équivaut à avoir une break car le reste du code de la boucle n'est pas exécuté ( notez que tout code après la boucle n'est pas exécuté non plus ):

def break_loop():
    for i in range(1, 5):
        if (i == 2):
            return(i)
        print(i)
    return(5)

Si vous avez des boucles imbriquées, l'instruction return interrompt toutes les boucles:

def break_all():
    for j in range(1, 5):
        for i in range(1,4):
            if i*j == 6:
                return(i)
            print(i*j)

va sortir:

1 # 1*1
2 # 1*2
3 # 1*3
4 # 1*4
2 # 2*1
4 # 2*2
# return because 2*3 = 6, the remaining iterations of both loops are not executed