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.