NSI (première) · Chapitre 2 · Application directe du cours
La boucle while x!= 1.0
Flottants, booléens et textes · Lire, écrire et comparer des flottants · niveau 2
Énoncé
La boucle while x != 1.0: x = x + 0.1 ne s'arrête jamais. (a) Combien de tours fait la variante while x < 1.0 ? (b) Réécrire la boucle pour qu'elle produise exactement les dix valeurs à .
Corrigé
(a) Onze tours, et non dix — un de trop.
>>> x, n = 0.0, 0
>>> while x < 1.0:
... x = x + 0.1
... n = n + 1
>>> n, x
(11, 1.0999999999999999)
Après dix additions, vaut , très légèrement inférieur à : la condition reste vraie, et un onzième tour a lieu. Le test ne boucle pas indéfiniment, mais il compte faux.
(b) La bonne écriture : compter en entiers.
for i in range(10):
x = i / 10
...
range compte sur des entiers, qui sont exacts ; la division n'a lieu qu'au moment de l'usage, et elle n'accumule aucune erreur d'un tour sur l'autre.
Erreur attendue : corriger le != en < et croire le problème réglé. La boucle s'arrête, mais elle fait onze tours : le défaut a changé de visage, il n'a pas disparu. Un compteur de boucle doit être entier.
100 % gratuit
Essaie le suivant avec le tuteur
- L'exercice suivant avec le tuteur, sans compte : il guide pas à pas, sans donner la réponse
- 16 autres exercices corrigés dans ce chapitre, et 20 à chercher avec le tuteur
- Le podcast et la vidéo du chapitre et la correction filmée du TD : 2 minutes sans compte
Sans compte : le cours, 2 minutes de podcast et de vidéo et un exercice avec le tuteur. Pour tout le reste : inscription gratuite en 30 secondes, sans carte bancaire.