Passer au contenu principal
eLearner.app
Module 2 · Leçon 3 sur 47/36 dans le cours~10 min
Leçons du module (3/4)

break, continue et else dans les boucles

À l'intérieur d'une boucle (à la fois for et while), vous pouvez modifier le flux normal avec trois constructions :

  • breakquitte la boucle immédiatement.
  • continuesaute le reste du corps et passe à l'itération suivante.
  • else (sur la boucle) — exécuté lorsque la boucle se termine sans un break.

break

Python
for n in [3, 7, 11, 4, 9]:
    if n % 2 == 0:
        primo_pari = n
        break
primo_pari  # 4

break arrête la boucle dès que possible. Tout ce qui suit break dans le corps de l'itération en cours n'est PAS exécuté.

continue

Python
risultati = []
for n in range(1, 11):
    if n % 2 == 0:
        continue   # skip evens
    risultati.append(n * n)
risultati  # [1, 9, 25, 49, 81]

Pensez à continue comme "aller à l'itération suivante". Il est utilisé pour filtrer des éléments sans ajouter un niveau d'indentation supplémentaire.

else sur la boucle (idiome Pythonic)

Une particularité de Python : les boucles peuvent également avoir un else, exécuté uniquement si la boucle s'est terminée naturellement (sans break). C'est parfait pour les recherches :

Python
target = 7
for n in [2, 4, 6, 8]:
    if n == target:
        trovato = True
        break
else:
    trovato = False
trovato  # False

Lisez-le comme : "pour chaque n de la liste ; si vous prenez la branche du break, ignorez le else ; sinon, exécutez le else".

Boucles imbriquées : break ne quitte que la plus interne

Python
for x in range(3):
    for y in range(3):
        if x == y == 1:
            break
        print(x, y)

break ne quitte que le for y, pas le for x. Pour quitter les deux, vous devez utiliser un drapeau ou une fonction + return.

L'insolite construction loop...else

En Python, les boucles for et while peuvent toutes deux comporter une clause facultative else. Le bloc else is exécuté uniquement si la boucle se termine normalement (c'est-à-dire sans rencontrer d'instruction break). C'est très utile pour les algorithmes de recherche (par exemple, "rechercher un élément : si trouvé, break ; sinon, signaler qu'il n'a pas été trouvé").

À vous de jouer

Exercice#python.m2.l3.e1
Tentatives : 0Chargement…

Étant donné la liste `numbers = [10, 15, 20, 25, 30, 35]`, trouvez le premier nombre divisible par 7 et assignez-le à `result`. Si aucun n'existe, assignez -1.

Chargement de l'éditeur…
Afficher l'indice

35 est le premier (et le seul) divisible par 7 dans la liste.

Solution disponible après 3 tentatives

Exercice de révision

Exercice#python.m2.l3.e2
Tentatives : 0Chargement…

Construisez la liste `odd_numbers` avec les nombres impairs de 1 à 20 (inclus) en utilisant une boucle for sur range(1, 21) et continue pour sauter les pairs.

Chargement de l'éditeur…
Afficher l'indice

Si n est pair, continue ; sinon append.

Solution disponible après 3 tentatives

Défi supplémentaire

Exercice#python.m2.l3.e3
Tentatives : 0Chargement…

Étant donné la liste `numbers = [7, 11, 14, 21, 25]`, écrivez une boucle `for` pour trouver le premier nombre divisible par 7 et également strictement supérieur à 10. Lorsque vous le trouvez, stockez-le dans `found` et quittez la boucle à l'aide de `break`. Enfin, évaluez `found`.

Chargement de l'éditeur…
Afficher l'indice

Dans la boucle, vérifiez si num % 7 == 0 and num > 10:, assignez-le à found et déclenchez break.

Solution disponible après 3 tentatives