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 :
break— quitte la boucle immédiatement.continue— saute le reste du corps et passe à l'itération suivante.else(sur la boucle) — exécuté lorsque la boucle se termine sans unbreak.
break
for n in [3, 7, 11, 4, 9]:
if n % 2 == 0:
primo_pari = n
break
primo_pari # 4break 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
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 :
target = 7
for n in [2, 4, 6, 8]:
if n == target:
trovato = True
break
else:
trovato = False
trovato # FalseLisez-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
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
É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.
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
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.
Afficher l'indice
Si n est pair, continue ; sinon append.
Solution disponible après 3 tentatives
Défi supplémentaire
É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`.
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