Comment arrêter ou quitter une boucle en Python ?

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