Python au lycée (3) : Les boucles Méthode

Choisir entre une boucle for et une boucle while

Durée estimée
5 minutes
Votre progression

Créez un compte gratuit pour suivre votre avancement et reprendre où vous avez laissé.

Créer un compte

Méthode

Pour choisir entre for et while, se poser une seule question :

  • Connaît-on à l'avance le nombre de répétitions ?
  1. Oui (par exemple « répéter 100 fois », « pour $i$ allant de 1 à 20 », « pour chaque terme d'une somme ») : utiliser for avec range.
  2. Non (on veut répéter tant qu'une condition est vraie, ou s'arrêter dès qu'on atteint un seuil) : utiliser while.

Deux repères complémentaires :

  • for = boucle bornée : le nombre de tours est fixé avant de commencer.
  • while = boucle non bornée : on ne sait pas à l'avance combien de tours seront faits.

Répéter exactement 10 fois

On veut simuler 10 lancers d'une pièce de monnaie. Le nombre de répétitions est connu à l'avance : on utilise for.

from random import randint

for i in range(10) :
    resultat = randint(0, 1)
    if resultat == 0 :
        print("Pile")
    else :
        print("Face")

Étape 1 : 10 lancers : for i in range(10) fait 10 tours.

Étape 2 : Un while fonctionnerait aussi mais serait plus lourd : il faudrait initialiser un compteur, le tester, l'incrémenter à chaque tour.

Lancer un dé jusqu'à obtenir un 6

On veut lancer un dé jusqu'à obtenir un 6, et compter le nombre de lancers. Le nombre de répétitions n'est pas connu à l'avance : on utilise while.

from random import randint

tirage = 0
nb_lancers = 0
while tirage != 6 :
    tirage = randint(1, 6)
    nb_lancers = nb_lancers + 1
print("Obtenu après", nb_lancers, "lancers.")

Étape 1 : On ne sait pas combien de lancers seront nécessaires (peut-être 1, peut-être 20).

Étape 2 : La boucle continue tant que tirage n'est pas égal à 6. Dès que 6 sort, on quitte la boucle.

Étape 3 : On initialise tirage = 0 pour que la condition du while soit vraie au premier test.

Remarque

Une boucle for bornée peut toujours se réécrire avec un while, en créant manuellement un compteur. L'inverse n'est pas toujours possible : si la sortie dépend d'une condition qui évolue de manière imprévisible, seul le while convient.

Attention

Ne pas utiliser un while à la place d'un for « par sécurité ». L'usage d'un while mal maîtrisé conduit fréquemment à :

  • des boucles infinies (oubli de mise à jour de la variable de condition) ;
  • des erreurs de borne (un tour de trop ou de moins).

Quand le nombre de répétitions est connu, le for est plus court, plus clair et moins dangereux.

Pour s'entraîner