Un capital de 1 000 € perd 10 % de sa valeur chaque année. On exécute le script suivant.
n = 0
u = 1000
while u > 500:
u = 0.9*u
n = n + 1
print(n, u)a) Que représente u après k passages dans la boucle ? b) Qu'affiche le script ? c) Pourquoi la boucle s'arrête-t-elle à coup sûr ?
Voir la correction
a) Perdre 10 %, c'est multiplier par 0,9 : après k passages, u vaut 1 000 × 0,9k, la valeur du capital après k années, et n vaut k.
b) La boucle continue tant que le capital dépasse 500 €. Valeurs successives (arrondies) : 900 ; 810 ; 729 ; 656,1 ; 590,5 ; 531,4 ; 478,3. Après le sixième passage, u ≈ 531,4 > 500, on continue ; après le septième, u ≈ 478,3 ≤ 500, la condition devient fausse et la boucle s'arrête.
Le script affiche 7 478.296... : le capital passe sous la moitié de sa valeur initiale au bout de 7 ans.
c) À chaque passage, u est multiplié par 0,9 < 1 : les valeurs 1 000 × 0,9n deviennent aussi petites que l'on veut, donc elles finissent par passer sous 500. Une boucle while n'est correcte que si une telle garantie existe ; avec u = 1.1*u, le capital augmenterait et la boucle ne s'arrêterait jamais.