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 round et lui passer en argument le nombre de décimales à garder.

Exemple attendu

  • calculer_montant_final(100, 15, 10) doit retourner 103.5.
Afficher l'aide
  • 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
+0

Jean-Thomas MIQUELOT

+0

louise

+0

Jason

+0

DamECP

+0

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.5

Console

Un instant...

Résultats

/ 5 tests validés

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é 👇

Seules les propositions différentes de la solution proposée par Docstring peuvent être envoyées.

Ma solution :

Rechercher sur le site

Inscris-toi à Docstring

Pour commencer ton apprentissage.

Tu as déjà un compte ? Connecte-toi.