Introduction
En Python, il existe plusieurs façons d’arrêter ou de quitter une boucle selon votre objectif. Que vous souhaitiez interrompre uniquement la boucle actuelle, sortir de plusieurs boucles imbriquées, ou arrêter tout le programme, Python fournit plusieurs outils pour contrôler l’exécution des boucles.
Arrêter une seule boucle
break : arrêter la boucle immédiatement
Utilisez break lorsque vous souhaitez quitter la boucle en cours immédiatement.
Exemple :
1 2 3 4 | for i in range(10): if i == 5: break print(i) |
La boucle s’arrête lorsque i atteint 5.
return : arrêter la boucle ET quitter la fonction
Utile lorsque la boucle se trouve dans une fonction.
Exemple :
1 2 3 4 5 | def find_value(nums, target): for n in nums: if n == target: return "Found!" return "Not found" |
raise : arrêter la boucle en levant une exception
Utilisé lorsque vous souhaitez signaler quelque chose d’inattendu.
Exemple :
1 2 3 | for x in data: if x < 0: raise ValueError("Negative value!") |
sys.exit() : arrêter la boucle et terminer le programme
À utiliser uniquement dans les scripts que vous souhaitez quitter complètement.
1 2 3 4 5 6 | import sys for i in range(10): if i == 3: sys.exit() print(i) |
Utiliser une condition qui fait s’arrêter la boucle
Pour les boucles while :
1 2 3 4 5 | running = True while running: x = input("Type stop: ") if x == "stop": running = False |
Quitter une boucle imbriquée
Utiliser une variable indicatrice (flag)
La méthode la plus simple et la plus courante.
1 2 3 4 5 6 7 8 9 | stop = False for i in range(5): for j in range(5): if j == 2: stop = True break # quitte la boucle interne if stop: break # quitte la boucle externe |
Utiliser return (si dans une fonction)
Arrête toutes les boucles immédiatement.
1 2 3 4 5 6 7 | def search(): for i in range(5): for j in range(5): if i == 3 and j == 2: return (i, j) print(search()) |
Lever une exception pour sortir de toutes les boucles
À utiliser lorsque vous devez vraiment sortir de plusieurs niveaux de boucles.
1 2 3 4 5 6 7 8 9 10 | class BreakLoop(Exception): pass try: for i in range(5): for j in range(5): if j == 3: raise BreakLoop except BreakLoop: pass |
Réécrire les boucles dans une fonction avec return (la méthode la plus propre)
1 2 3 4 5 6 | def find_value(matrix): for i in range(len(matrix)): for j in range(len(matrix[i])): if matrix[i][j] == 99: return i, j return None |
Recommandation
- Si votre code est dans une fonction → utilisez
return. - Sinon → utilisez une variable indicatrice (flag).
Arrêter complètement le programme avec sys.exit()
sys.exit() est utilisé lorsque vous souhaitez arrêter tout le programme Python, et pas seulement une boucle.
Il lève une exception SystemExit, qui met fin à l’exécution sauf si elle est interceptée.
C’est utile lorsque :
- vous détectez une erreur critique et souhaitez arrêter le script
- une boucle atteint une condition qui rend la suite inutile
- votre programme dépend d’une ressource externe qui échoue
Exemple : arrêter le script depuis une boucle
1 2 3 4 5 6 7 | import sys for i in range(10): if i == 3: print("Arrêt du programme...") sys.exit() # Le script s'arrête ici print(i) |
Sortie :
1 2 3 4 | 0 1 2 Arrêt du programme... |
Plus aucune instruction n’est exécutée après sys.exit().
Exemple : arrêter le programme avec un message
1 2 3 4 5 6 | import sys filename = "data.csv" if not filename.endswith(".csv"): sys.exit("Erreur : le fichier d'entrée doit être un fichier CSV.") |
sys.exit("message") affiche le message puis quitte.
Exemple : intercepter l’arrêt (optionnel)
Vous pouvez intercepter SystemExit si vous avez besoin d’effectuer un nettoyage.
1 2 3 4 5 6 | import sys try: sys.exit("Programme arrêté.") except SystemExit as e: print("Sortie interceptée :", e) |
Quand utiliser sys.exit() ?
À utiliser lorsque :
- vous souhaitez arrêter tout le script
- une boucle ne doit pas continuer
- une vérification critique échoue (mauvais fichier, données manquantes, configuration invalide)
À éviter :
Dans les bibliothèques destinées à être importées (cela peut interrompre l’application qui les utilise).
Références
| Liens | Site |
|---|---|
| https://docs.python.org/3/tutorial/controlflow.html#break-and-continue-statements | Python Docs – Break & Continue |
| https://docs.python.org/3/reference/simple_stmts.html#the-break-statement | Python Docs – break statement |
| https://docs.python.org/3/reference/simple_stmts.html#the-continue-statement | Python Docs – continue statement |
| https://docs.python.org/3/reference/simple_stmts.html#the-return-statement | Python Docs – return statement |
| https://docs.python.org/3/library/exceptions.html | Python Docs – Exceptions (pour quitter plusieurs boucles) |
| https://docs.python.org/3/library/sys.html#sys.exit | Python Docs – sys.exit() |
