Python : Au bout de combien d’années le capital double-t-il ?
Créez un compte gratuit pour suivre votre avancement et reprendre où vous avez laissé.
Créer un compteObjectifs travaillés
Le 1ᵉʳ janvier 2025, Lou place $ 5~000 $ € sur un livret rémunéré au taux annuel de $ 3{,}5~\% $. Chaque année, au 1ᵉʳ janvier, les intérêts sont ajoutés au capital : le capital est ainsi multiplié par $ 1{,}035 $.
- Vérifier que le capital de Lou s'élève à $ 5~175 $ € au 1ᵉʳ janvier 2026.
- On souhaite déterminer l'année à partir de laquelle le capital de Lou dépassera $ 10~000 $ €. Expliquer pourquoi on ne peut pas répondre à cette question avec une boucle for.
Compléter le programme Python ci-dessous pour qu'il affiche le nombre d'années nécessaires pour que le capital dépasse $ 10~000 $ €.
capital = 5000 n = 0 while ... : capital = ... n = ... print(n)- Écrire une fonction duree(C, t, S) qui renvoie le nombre d'années nécessaires pour qu'un capital initial $ C $ placé au taux annuel $ t~\% $ dépasse la somme $ S $.
Vérifier que l'appel duree(5000, 3.5, 10000) donne bien le résultat de la question 3.
Corrigé
- Au 1ᵉʳ janvier 2026, le capital vaut $ 5~000 \times 1{,}035 = \mathbf{5~175} $ €.
- On ne connaît pas à l'avance le nombre d'années à attendre : il faut répéter la multiplication par $ 1{,}035 $ tant que le capital reste inférieur à $ 10~000 $ €. Une boucle while est donc adaptée.
À chaque passage dans la boucle, on multiplie le capital par $ 1{,}035 $ et on incrémente le compteur $ n $ :
capital = 5000 n = 0 while capital < 10000: capital = capital * 1.035 n = n + 1 print(n)Ce programme affiche $ 21 $.
Vérification : au bout de $ 20 $ ans, le capital vaut $ 5~000 \times 1{,}035^{20} \approx 9~948{,}94 $ € (encore inférieur à $ 10~000 $ €). Au bout de $ 21 $ ans, il vaut $ 5~000 \times 1{,}035^{21} \approx 10~297{,}16 $ €, ce qui dépasse $ 10~000 $ €.
Le capital de Lou dépassera donc $ 10~000 $ € au bout de $ 21 $ ans, c'est-à-dire le 1ᵉʳ janvier 2046.On remplace les valeurs numériques par les paramètres C, t et S :
def duree(C, t, S): capital = C n = 0 while capital < S: capital = capital * (1 + t / 100) n = n + 1 return nTest :
>>> duree(5000, 3.5, 10000) 21
→ Pour réviser : Choisir entre une boucle for et une boucle while