Boucle for ou boucle while en Python : quand utiliser l'une ou l'autre

Les deux boucles répètent du code, si bien que les débutants hésitent souvent. La règle générale : utilisez une boucle for lorsque vous savez ce que vous parcourez, et une boucle while lorsque vous attendez qu'une chose change. Chaque exemple ci-dessous a été exécuté, et le résultat affiché est exact.

for avec range : un nombre de fois connu

range(3) donne 0, 1 et 2. La variable de boucle prend chaque valeur à son tour. La fin de range n'est jamais incluse.

for i in range(3):
    print(i)

Sortie :

0
1
2

for sur une liste : chaque élément

Une boucle for peut parcourir directement une liste, une chaîne, un dictionnaire ou tout ce que l'on peut parcourir élément par élément. Vous n'avez pas besoin d'un index.

for part in ["wrench", "cable"]:
    print(part)

Sortie :

wrench
cable

while : jusqu'à ce que quelque chose change

Une boucle while vérifie sa condition avant chaque tour. Quelque chose à l'intérieur de la boucle doit modifier cette condition, sinon elle ne s'arrête jamais. Ici, la batterie perd 3 à chaque tour jusqu'à ce qu'il n'en reste pas assez, et vous ne connaissez pas à l'avance le nombre de tours.

battery = 10
steps = 0
while battery >= 3:
    battery -= 3
    steps += 1
print(steps)

Sortie :

3

break et continue

break quitte la boucle immédiatement. continue saute le reste de ce tour et passe au suivant. Les deux fonctionnent dans les boucles for comme dans les boucles while.

for n in range(1, 8):
    if n % 2 == 0:
        continue
    if n > 5:
        break
    print(n)

Sortie :

1
3
5

La boucle infinie

Une boucle while dont la condition ne devient jamais fausse tourne indéfiniment. Si votre programme semble bloqué, vérifiez que la variable de la condition change réellement dans la boucle. Sur ce site, un programme qui tourne plus de cinq secondes est arrêté pour vous.

Questions fréquentes

Toute boucle for peut-elle s'écrire avec une boucle while ?
Oui, mais c'est plus long et plus facile à rater, car vous gérez vous-même le compteur. Préférez for chaque fois que vous parcourez une collection ou un intervalle fixe.
Quelle est la différence entre break et continue ?
break met fin à toute la boucle. continue saute seulement le tour en cours et poursuit avec le suivant.
Pourquoi ma boucle while ne se termine-t-elle jamais ?
La condition reste vraie parce que rien dans la boucle ne modifie la variable qu'elle teste. Ajoutez une ligne qui la rapproche de la fin, par exemple n -= 1.

Pratiquer