Utiliser une boucle while pour s’arrêter à un seuil
Créez un compte gratuit pour suivre votre avancement et reprendre où vous avez laissé.
Créer un compteMéthode
Pour écrire une boucle while qui s'arrête à un seuil :
- Identifier la condition de sortie (celle qu'on veut atteindre, par exemple « $u > 1000$ »).
- Écrire la condition de rester dans la boucle qui est son contraire (par exemple « $u \leqslant 1000$ »).
- Initialiser les variables utilisées dans la condition et dans le corps de la boucle avant le while.
- É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.
- 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.