Dans cet exercice, nous allons créer une fonction qui calcule le montant total d'une addition en fonction d'un pourboire et d'une réduction :
-
Écrire une fonction Python
calculer_montant_final(prix_base, pourcentage_pourboire, reduction)qui calcule un montant final à partir d’un prix de base, d’un pourboire (en %) et d’une réduction (en %). -
La fonction doit d’abord ajouter le pourboire au prix, puis appliquer la réduction sur le nouveau montant.
-
Le résultat doit être arrondi à un chiffre après la virgule.
À noter
- Pour arrondir un nombre, vous pouvez utiliser la fonction
roundet lui passer en argument le nombre de décimales à garder.
Exemple attendu
calculer_montant_final(100, 15, 10)doit retourner103.5.
- Pour calculer une réduction en pourcentage, on utilise la formule suivante :
prix_final = prix_initial * (1 - pourcentage_reduction / 100).
Code
def calculer_montant_final(prix_base, pourcentage_pourboire, reduction):
# 1) Ajouter le pourboire
prix_apres_pourboire = prix_base * (1 + pourcentage_pourboire / 100)
# 2) Appliquer la réduction en pourcentage
montant_final = prix_apres_pourboire * (1 - reduction / 100)
return round(montant_final, 1)
# Vérification avec l'exemple
resultat = calculer_montant_final(100, 15, 10)
print(resultat) # 103.5
Explications
La fonction prend trois paramètres: prix_base, pourcentage_pourboire et reduction. Les deux derniers sont exprimés en pourcentage. Pour appliquer un pourcentage p, on multiplie par (1 + p/100) pour augmenter, et par (1 - p/100) pour diminuer.
Étapes:
1) Ajouter le pourboire: pour 100 et 15%, on calcule 100 * (1 + 15/100) = 100 * 1.15 = 115.
2) Appliquer la réduction: pour 10%, on calcule 115 * (1 - 10/100) = 115 * 0.9 = 103.5.
3) Retourner le résultat final (un float), ici 103.5.
L’ordre est important: on ajoute d’abord le pourboire, puis on applique la réduction sur ce nouveau montant. C’est ce qui permet d’obtenir le résultat attendu de 103.5 pour l’exemple (100, 15, 10).
Points importants
- Une fonction avec paramètres rend le code beaucoup plus flexible
Jean-Thomas MIQUELOT

louise

Jason

DamECP

Yoann BOIDIN

def calculer_montant_final(prix_base, pourcentage_pourboire, reduction):
# 1) Ajouter le pourboire
prix_apres_pourboire = prix_base * (1 + pourcentage_pourboire / 100)
# 2) Appliquer la réduction en pourcentage
montant_final = prix_apres_pourboire * (1 - reduction / 100)
return round(montant_final, 1)
# Vérification avec l'exemple
resultat = calculer_montant_final(100, 15, 10)
print(resultat) # 103.5Console
Un instant...
Résultats
Test avec pourboire 15% et réduction 10%
resultat = calculer_montant_final(100, 15, 10) assert resultat == 103.5, 'Pour un prix de base de 100, pourboire 15% et réduction 10%, le résultat devrait être 103.5.'
Test sans pourboire ni réduction
resultat = calculer_montant_final(200, 0, 0) assert resultat == 200, 'Pour un prix de 200 sans pourboire ni réduction, le résultat devrait être 200.'
Test avec pourboire seulement
resultat = calculer_montant_final(150, 20, 0) assert resultat == 180, 'Pour un prix de 150 et un pourboire de 20%, le résultat devrait être 180.'
Test avec réduction seulement
resultat = calculer_montant_final(100, 0, 20) assert resultat == 80, 'Pour un prix de 100 sans pourboire mais avec une réduction de 20%, le résultat devrait être 80.'
Test avec pourboire et forte réduction
resultat = calculer_montant_final(50, 10, 50) assert resultat == 27.5, 'Pour un prix de 50, pourboire 10% et réduction 50%, le résultat doit être 27.5.'
Bravo, tu as réussi cet exercice de code 🥳
Envoyer ma solution
Vous avez trouvé une solution alternative pour cet exercice ? Proposez votre solution à la communauté 👇
Ma solution :