Adloun

Le script qui affiche zéro

Exercice · niveau 2 · mathématiques (ECT 1re année), chapitre 13 — Informatique et algorithmique · Lire et écrire un script

Énoncé

Le script suivant devait donner le nombre d'années au bout desquelles un capital de euros placé à dépasse euros. Il affiche 0. Trouver l'erreur, corriger le script, et donner la réponse.

C = 1000
n = 0
while C < 2000:
    C = C * 1.05
print(n)

Corrigé

L'erreur. Le compteur n est mis à avant la boucle et n'est jamais augmenté : le corps de la boucle ne contient qu'une seule ligne, celle qui met à jour le capital. La boucle tourne pourtant correctement — le capital croît et finit par dépasser , donc elle s'arrête — mais n vaut encore au moment de l'affichage.

La correction. Il faut ajouter n = n + 1 dans le corps de la boucle, à la même indentation que la mise à jour du capital.

C = 1000
n = 0
while C < 2000:
    C = C * 1.05
    n = n + 1
print(n, C)
# 15 2078.9281794113685

La réponse. Il faut années.

Le contrôle à la main. , donc après ans le capital vaut euros : encore sous . Et , soit euros après ans. Le seuil est bien franchi entre les deux.

Le point à retenir. Dans une boucle while, deux grandeurs évoluent en général : celle qu'on teste et celle qu'on compte. Oublier la seconde ne provoque aucun message d'erreur — le script répond, et il répond faux. C'est la pire espèce de défaut, et le seul remède est de vérifier la réponse à la main sur un cas.

Les autres exercices de ce chapitre Le cours du chapitre

Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.