Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Licence CC BY-NC-ND Thierry Parmentelat & Arnaud Legout Inria - UCA

Complément - niveau basique

Boucles sans fin - break

Utiliser while plutôt que for est une affaire de style et d’habitude. Cela dit en Python, avec les notions d’itérable et d’itérateur, on a tendance à privilégier l’usage du for pour les boucles finies et déterministes.

Le while reste malgré tout d’un usage courant, et notamment avec une condition True.

Par exemple le code de l’interpréteur interactif de python pourrait ressembler, vu de très loin, à quelque chose comme ceci :

while True:
    print(eval(read()))

Notez bien par ailleurs que les instructions break et continue fonctionnent, à l’intérieur d’une boucle while, exactement comme dans un for, c’est-à-dire que :

Complément - niveau intermédiaire

Rappel sur les conditions

On peut utiliser dans une boucle while toutes les formes de conditions que l’on a vues à l’occasion de l’instruction if.

Dans le contexte de la boucle while on comprend mieux, toutefois, pourquoi le langage autorise d’écrire des conditions dont le résultat n’est pas nécessairement un booléen. Voyons cela sur un exemple simple :

# une autre façon de parcourir une liste
liste = ['a', 'b', 'c']

while liste:
    element = liste.pop()
    print(element)
c
b
a

Une curiosité : la clause else

Signalons enfin que la boucle while - au même titre d’ailleurs que la boucle for, peut être assortie d’une clause else, qui est exécutée à la fin de la boucle, sauf dans le cas d’une sortie avec break

# Un exemple de while avec une clause else

# si break_mode est vrai on va faire un break
# après le premier élément de la liste
def scan(liste, break_mode):

    # un message qui soit un peu parlant
    message = "avec break" if break_mode else "sans break"
    print(message)
    while liste:
        print(liste.pop())
        if break_mode:
            break
    else:
        print('else...')
# sortie de la boucle sans break
# on passe par else
scan(['a'], False)
sans break
a
else...
# on sort de la boucle par le break
scan(['a'], True)
avec break
a

Ce trait est toutefois très rarement utilisé.