
Instructions break et continue : contrôler le flux des boucles
Maîtrisez les instructions 'break' et 'continue' en Python. Interrompez une boucle prématurément ou passez à l'itération suivante. Optimisez le contrôle du flux de vos boucles for et while.
L'instruction break : interrompre une boucle prématurément
L'instruction `break` permet d'interrompre l'exécution d'une boucle (`for` ou `while`) avant qu'elle n'ait parcouru tous les éléments (pour une boucle `for`) ou que la condition ne devienne fausse (pour une boucle `while`).
Lorsque l'instruction `break` est rencontrée, l'exécution sort immédiatement de la boucle et se poursuit avec l'instruction qui suit la boucle (s'il y en a une).
Exemple avec une boucle `for` :
nombres = [1, 3, 5, 6, 7, 9]
for n in nombres:
if n % 2 == 0:
print("Le premier nombre pair trouvé est :", n)
break # Interrompt la boucle dès qu'un nombre pair est trouvé
else:
print("Aucun nombre pair trouvé dans la liste.")Dans cet exemple, la boucle s'arrête dès que le nombre 6 est rencontré. Le message "Aucun nombre pair trouvé dans la liste." ne s'affichera pas, car la boucle ne s'est pas terminée "naturellement".
Exemple avec une boucle `while` :
compteur = 0
while compteur < 10:
if compteur == 5:
break # Interrompt la boucle lorsque compteur vaut 5
print(compteur)
compteur += 1L'instruction `break` est souvent utilisée pour sortir d'une boucle lorsqu'une condition particulière est remplie, ou pour éviter une boucle infinie.
L'instruction continue : passer à l'itération suivante
L'instruction `continue` permet de passer à l'itération suivante d'une boucle (`for` ou `while`) sans exécuter le reste du bloc de code de l'itération courante.
Lorsque l'instruction `continue` est rencontrée, l'exécution saute directement au début de la boucle pour l'itération suivante. Pour une boucle `for`, cela signifie passer à l'élément suivant de la séquence. Pour une boucle `while`, cela signifie réévaluer la condition.
Exemple avec une boucle `for` :
nombres = [1, 2, 3, 4, 5, 6]
for n in nombres:
if n % 2 == 0:
continue # Passe à l'itération suivante si n est pair
print("Nombre impair :", n)Dans cet exemple, seuls les nombres impairs sont affichés. Lorsque `n` est pair, l'instruction `continue` est exécutée et l'instruction `print()` est ignorée.
Exemple avec une boucle `while` :
compteur = 0
while compteur < 10:
compteur += 1
if compteur % 3 == 0:
continue # Passe à l'itération suivante si compteur est un multiple de 3
print(compteur)Dans cet exemple, la boucle `while` incrémente `compteur` à chaque passage. Cependant, grâce à l'instruction `continue`, les multiples de 3 ne sont pas affichés.
L'instruction `continue` est souvent utilisée pour ignorer certains éléments d'une séquence ou pour éviter d'exécuter du code dans des cas particuliers.
Utilisations combinées de break et continue : exemples
Il est possible de combiner les instructions `break` et `continue` dans une même boucle pour un contrôle plus fin du flux d'exécution.
Exemple :
nombres = [1, 2, -3, 4, -5, 6, 7, 8, -9, 10]
somme_positifs = 0
for n in nombres:
if n < 0:
continue # Ignore les nombres négatifs
if somme_positifs > 20:
break # Interrompt la boucle si la somme dépasse 20
somme_positifs += n
print("La somme des nombres positifs (jusqu'à 20) est :", somme_positifs)Dans cet exemple, la boucle `for` parcourt une liste de nombres. Si un nombre est négatif, il est ignoré (`continue`). Sinon, il est ajouté à la somme. La boucle est interrompue (`break`) si la somme dépasse 20.
Un autre exemple, cette fois-ci avec une boucle `while` et une combinaison des instructions.
while True: # Boucle infinie (attention !)
reponse = input("Entrez un nombre entre 1 et 10 (ou 'stop' pour quitter) : ")
if reponse.lower() == 'stop':
break # Sort de la boucle si l'utilisateur entre 'stop'
try:
nombre = int(reponse)
except ValueError:
print("Entrée invalide. Veuillez entrer un nombre ou 'stop'.")
continue # Retourne au début de la boucle
if nombre < 1 or nombre > 10:
print("Le nombre doit être compris entre 1 et 10.")
continue # Retourne au début de la boucle
print("Vous avez entré :", nombre)
break # Sort de la boucle car on a un nombre valideBonnes pratiques et pièges à éviter
Voici quelques bonnes pratiques et pièges à éviter lors de l'utilisation de `break` et `continue` :
- Utilisez `break` et `continue` avec parcimonie : Un usage excessif de ces instructions peut rendre le code difficile à suivre et à comprendre. Dans de nombreux cas, il est possible d'obtenir le même résultat avec une structure de boucle plus claire.
- Evitez les boucles infinies involontaires : Assurez-vous que la condition de votre boucle `while` deviendra fausse à un moment donné, ou que vous avez une instruction `break` pour sortir de la boucle.
- Documentez l'utilisation de `break` et `continue` : Si vous utilisez ces instructions de manière non triviale, ajoutez des commentaires pour expliquer pourquoi vous les utilisez et comment elles affectent le flux d'exécution.
- Préférez des alternatives plus claires si possible : Parfois, l'utilisation de `break` ou `continue` peut être évitée en restructurant la boucle ou en utilisant des fonctions auxiliaires.
- Testez soigneusement votre code : Assurez-vous que votre boucle se comporte comme prévu, en particulier dans les cas où `break` et `continue` sont utilisés.
En suivant ces conseils, vous utiliserez `break` et `continue` de manière efficace et judicieuse, pour rendre votre code plus clair et plus facile à maintenir.