Les intérêts composés et leur calcul en Python
Par Darko Stankovski, 12/07/2026 (Mise à jour 12/07/2026) — Débutant
Régulièrement, sur les réseaux sociaux, on voit apparaitre un étonnement sur le cout d'un crédit immobilier. Car le taux du crédit annoncé (disons 4%) est annuel. Pour un emprunt de 200.000,00 € sur 20 ans, le cout de votre crédit n'est pas de 8.000,00 € mais de 90870,52 €…
Ceci résulte de la notion d'intérêts composés. Dans la pratique, c'est la même chose que pour vos comptes d'épargne. Dans les deux cas, c'est un sujet intéressant pour un exercice Python qui permet d'utiliser les boucles.
Pour ces exemples de code Python, j'ai essayé de calibrer le tuto pour des élèves de seconde qui s'initient à Python.
À l'issue de ce tuto :
- Vous comprendrez ce que sont les intérêts composés.
- Vous connaitrez la subtilité entre un amortissement constant et les mensualités constantes.
- Vous verrez comment les calculer intuitivement en Python.
Principe des intérêts composés
SI on annonce des intérêts, disons 1,5%, sur une somme, disons 1.000,00 €, ces intérêts vont vous rapporter 1000 * 0.015 soit 15,00 €. Mais les intérêts ont une échéance, l'année en général. Donc l'année suivante, la somme est de 1.015,00 € et les intérêts de l'année suivante seront de 1015 * 0.015 soit 15,225 €.
Et oui, les 15,00 € d'intérêts vont vous rapporter des intérêts. Et ainsi de suite d'année en année.
Pour calculer le gain au bout de X années, il ne suffit pas de multiplier la somme initiale par le taux et le nombre d'années car chaque année a fait augmenter la somme initiale sur laquelle est calculé l'intérêt suivant. Les intérêts composés, c'est cet effet boule de neige où les intérêts gagnés génèrent eux même des intérêts.
Malheureusement, c'est la même chose pour un emprunt. Si vous empruntez 100.000,00 € à 4% sur 10 ans, vous remboursez 10.000,00 € par an mais en même temps, vous payez 4% d'intérêt sur somme que vous devez. Donc :
- La première année, vous remboursez 10.000,00 € en ajoutant 4% sur 100.000,00 € soit 4.000,00 d'intérêts.
- La seconde année, vous remboursez 10.000,00 € en ajoutant 4% sur les 90.000,00 € restants, soit 3.600,00 €
- Et ainsi de suite.
Le cout total du crédit est donc la somme des intérêts de chaque année sur la valeur restant de l'emprunt. C'est ce qu'on a besoin de calculer.
Note : il y a une subtilité, il s'agit là de ce que l'on appelle un amortissement constant. Ce n'est pas ce qu'appliquent les banques, je vous en parle en fin de tuto.
Calculer les intérêts d'un compte d'épargne.
Commençons par un exemple simple : la calcul des intérêts d'un compte épargne. On va poser que :
- Le solde du compte est de 2.000,00 €.
- Le taux d'intérêt est de 1,5% (taux du Livret A à l'écriture de ces lignes).
- Ce capital n'est pas touché (pas de dépôt ni retrait) sur la durée calculée qui sera d'une année complète.
Les intérêts au bout d'un an sont simples à calculer : solde * 0.015 et pour le nouveau solde, on y ajoute simplement ces intérêts. En Python, nous aurons donc :
value = 2000
rate = 0.015
earning = value * rate
next_year_value = value + earning
print(f"intérêts : {earning:.2f} €") # Affichera "intérêts : 30.00 €".
print(f"solde : {next_year_value:.2f} €") # Affichera "solde : 2030.00 €".
Évidemment, si vous voulez avoir directement la nouvelle valeur du solde le calcul est solde * 1.015.
Pour calculer le gain au bout de X années, il suffit de faire une boucle et d'ajouter les intérêts chaque année. Cette vois, nous allons modifier la variable solde :
value = 2000
rate = 0.015
duration = 10
for _ in range(duration):
earning = value * rate
value = value + earning
print(f"solde : {value:.2f} €") # Affichera "solde : 2321.08 €".
Et bien entendu, vous pouvez afficher les gains et le solde de chaque année dans la boucle :
for year in range(duration):
earning = value * rate
value = value + earning
print(f" - Année {year}, intérêts de {earning:.2f}, solde de {value:.2f} ")
Avec le décalage de la valeur du range() qui en embête beaucoup… Il faudra que j'écrive un article à ce sujet.
Calcul du cout d'un crédit
Pour un crédit, ça va être similaire mais dans l'autre sens : on soustrait la somme due (mais le cout va augmenter 🤪).
Comme précédemment, on va poser les valeurs :
- Un emprunt de 200.000,00 €.
- Un taux de 4%.
- Une durée de 15 ans.
et on va commencer par une simplification : on ne rembourse qu'une fois par an la même somme tous les ans. Les intérêts à payer seront donc calculés sur la somme annuelle.
Le programme Python suivant :
- calcul la valeur des annuités
- répète autant de fois que d'années :
- calcul les intérêts dus pour l'année
- additionne ces intérêts aux intérêts précédents
- décrémente la somme due du montant de l'annuité
- affiche l'information pour l'année
Et à la fin, nous avons le cout total du crédit.
value = 200000
rate = 0.04
duration = 15
yearly_repayement = value / duration
cost = 0
for year in range(duration):
yearly_cost = value * rate
cost += yearly_cost
value -= yearly_repayement
print(f" - {year} : intérets {yearly_cost:.2f} € - solde {value:.2f} €")
print(f"Cout total : {cost:.2f} €")
Dans les faits, vous ne remboursez pas des annuités mais des mensualités. Les intérêts sont donc calculés chaque mois. Cela va entrainer des modifications minimes mais moins évidentes. en particulier pour le cout des intérêts mensuels. En effet, le taux annuel doit être divisé par 12.
Nous aurons donc :
value = 200000
rate = 0.04
duration = 15 * 12
monthly_repayement = value / duration
cost = 0
for month in range(duration):
monthly_cost = (value * rate) / 12
cost += monthly_cost
value -= monthly_repayement
print(f" - {month} : intérêts {monthly_cost:.2f} € - solde {value:.2f} €")
print(f"Cout total : {cost:.2f} €")
En soi, le calcul des intérêts gagnés ou du cout du crédit est un exercice assez simple à appliquer en Python tout en étant pédagogique sur ces questions financières.
Mais avec une approximation par rapport au monde réel.
Amortissement constant et mensualités constantes
Les exemple précédents sont pédagogiques et permettent de comprendre les intérêts composés. Mais dans le cas d'un crédit, ils illustrent le crédit à amortissement constant : on rembourse chaque mois la même part de capital à laquelle s'ajoute les intérêts. Vu que les intérêts baissent avec le temps, les mensualités également. Faites l'essai en modifiant l'affichage avec la ligne suivante :
print(f" - Intérêts {monthly_cost:.2f} € - payé {monthly_cost + monthly_repayement:.2f} €")
Les banques utilisent presque toujours le crédit à mensualités constantes : vous payez le même montant chaque mois. Dans ce montant, la part des intérêts est donc importante au début et négligeable à la fin.
Il y a alors deux exercices possibles :
- définir la mensualité et calculer en combien de temps on rembourse le crédit (la dernière mensualité sera certainement inférieur aux autres).
- définir la durée du crédit et déterminer les mensualités.
Pour le second cas, il y a une formule relevant de l'algèbre financière que je ne vais pas afficher car il me manque un plug-in de mise en forme de formules mathématiques. Et je pense que l'on va compliquer les exemples pour des cas d'initiation à Python pour des élèves de 2de.
Le premier cas est plus intéressant d'un point de vue pédagogique : on connait la mensualité mais on ignore la durée donc le nombre d'itérations. C'est un cas qui fait travailler la boucle while.
Nous allons donc définir la somme à payer chaque mois et à chaque itération, déterminer la part de payement des intérêts. La différence est le remboursement du crédit. Nous répétons l'opération tant qu'il y a quelque chose à rembourser.
La version simple et directe est la suivante :
value = 200000
rate = 0.04
monthly_total = 1000
cost = 0
month_count = 0
while value > 0:
monthly_cost = (value * rate) / 12
monthly_repayement = monthly_total - monthly_cost
value -= monthly_repayement
cost += monthly_cost
month_count += 1
print(f" - intérêts {monthly_cost:.2f} € - remboursé {monthly_repayement:.2f} €")
print(f"Cout total : {cost:.2f} € en {month_count} mois")
Il manque cependant un contrôle dans ce code : la somme payée étant fixe, lors de la dernière mensualité, il y a de fortes chances que la somme passe en négatif. Il faut donc vérifier que la somme à rembourser ne soit pas supérieur au reste à rembourser.
La boucle devient donc :
while value > 0:
monthly_cost = (value * rate) / 12
monthly_repayement = monthly_total - monthly_cost
month_count += 1
cost += monthly_cost
if value >= monthly_repayement:
value -= monthly_repayement
else:
monthly_repayement = value
value = 0
print(f" - intérêts {monthly_cost:.2f} € - remboursé {monthly_repayement:.2f} €")
En conclusion
Les intérêts composés sont une notion importante qui vous permet de comprendre le rendement d'une épargne mais surtout qui vous évite des surprises pour les négociations d'emprunts.
Si leur calcul peut être résumé par des formules (non abordé ici), comprendre leur fonctionnement permet de déduire intuitivement le programme à écrire pour les calculer et avoir le détail chaque mois.