Adloun

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

Faire l'exercice suivant avec le tuteur

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.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant avec le tuteur →