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

Utiliser une boucle while pour s’arrêter à un seuil

Durée estimée
10 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 écrire une boucle while qui s'arrête à un seuil :

  1. Identifier la condition de sortie (celle qu'on veut atteindre, par exemple « $u > 1000$ »).
  2. Écrire la condition de rester dans la boucle qui est son contraire (par exemple « $u \leqslant 1000$ »).
  3. Initialiser les variables utilisées dans la condition et dans le corps de la boucle avant le while.
  4. Écrire while condition : puis indenter les instructions à répéter. Ces instructions doivent faire évoluer la variable de condition pour garantir la sortie de boucle.
  5. Après la boucle, la variable testée vérifie la condition de sortie (c'est ce qu'on voulait).

Plus petite puissance de 2 supérieure ou égale à 1000

On veut trouver la plus petite puissance de 2 supérieure ou égale à 1000 :

i = 1
while i < 1000 :
    i = i * 2
print(i)     # affiche 1024

Étape 1 : On veut sortir dès que i >= 1000. La condition pour rester est donc i < 1000.

Étape 2 : Initialisation : i = 1. À chaque tour, on multiplie i par 2.

Étape 3 : Suivi des valeurs :

i avant le tour i < 1000 i après i = i * 2
1 vrai 2
2 vrai 4
... ... ...
512 vrai 1024
1024 faux — (on sort)

Étape 4 : À la sortie, i vaut 1024. C'est la plus petite puissance de 2 supérieure ou égale à 1000, car $512 < 1000$ et $1024 \geqslant 1000$.

Nombre de termes pour dépasser une somme

On veut trouver le plus petit entier n tel que $1 + 2 + 3 + \ldots + n \geqslant 500$ :

S = 0
n = 0
while S < 500 :
    n = n + 1
    S = S + n
print("n =", n, "et S =", S)

Étape 1 : Sortie voulue : S >= 500. Condition pour rester : S < 500.

Étape 2 : Initialisation : S = 0 et n = 0.

Étape 3 : À chaque tour, on incrémente n puis on ajoute ce nouveau n à la somme. S prend donc les valeurs $1$, $3$, $6$, $10$, …

Étape 4 : Pour n = 31, on a $S = \dfrac{31 \times 32}{2} = 496 < 500$. Pour n = 32, $S = 528 \geqslant 500$. Le programme s'arrête ici et affiche : n = 32 et S = 528.

Attention

Boucle infinie : si la condition du while ne change jamais, le programme ne sort jamais. Par exemple, oublier la ligne i = i * 2 fait tourner indéfiniment le programme.

Vérifier systématiquement deux points :

  • Toutes les variables du while sont bien initialisées avant la boucle.
  • Les instructions du corps font évoluer la variable de condition dans le bon sens.

En cas de boucle infinie, appuyer sur Ctrl+C pour interrompre le programme.

Pour s'entraîner