Parcours
/
Python
Python
/
Exercices
/
Échange de devises
Échange de devises

Échange de devises

Exercice d'apprentissage

Introduction

Les nombres

Il existe trois types de nombres natifs en Python : ints, floats et complex. Toutefois, dans cet exercice, tu ne manipuleras que des ints et des floats.

ints

Les ints sont des nombres entiers, par exemple 1234, -10 ou 20201278.

Les entiers en Python bénéficient d'une précision arbitraire : le nombre de chiffres n'est limité que par la mémoire disponible du système hôte.

floats

Les floats sont des nombres qui comportent une partie décimale, par exemple 0.0, 3.14 ou -9.01.

Les nombres à virgule flottante sont généralement implémentés en Python à l'aide d'un double en C (15 décimales de précision), mais leur représentation varie en fonction du système hôte et d'autres détails d'implémentation. Cela peut créer quelques surprises lorsqu'on travaille avec des floats, mais c'est « suffisamment bon » pour la plupart des situations.

Tu trouveras plus de détails et de discussions dans les ressources suivantes :

Arithmétique

Python prend entièrement en charge les opérations arithmétiques entre ints et floats. Il convertit les nombres les plus étroits pour les accorder à leur équivalent plus large lorsqu'ils sont utilisés avec les opérateurs arithmétiques binaires (+, -, *, /, // et %).

Python considère les ints comme plus étroits que les floats. Ainsi, utiliser un float dans une expression garantit que le résultat sera lui aussi un float. Cependant, dans une division, le résultat est toujours un float, même si seuls des entiers sont utilisés.

# The int is widened to a float here, and a float type is returned.
>>> 3 + 4.0
7.0
>>> 3 * 4.0
12.0
>>> 3 - 2.0
1.0
# Division always returns a float.
>>> 6 / 2
3.0
>>> 7 / 4
1.75
# Calculating remainders.
>>> 7 % 4
3
>>> 2 % 4
2
>>> 12.75 % 3
0.75

Si tu as besoin d'un résultat entier, tu peux utiliser // pour tronquer le résultat.

>>> 6 // 2
3
>>> 7 // 4
1

Pour convertir un float en entier, tu peux utiliser int(). Pour convertir un entier en float, tu peux utiliser float().

>>> int(6 / 2)
3
>>> float(1 + 2)
3.0

Instructions

Ton ami Chandler prévoit de visiter des pays exotiques aux quatre coins du monde. Malheureusement, Chandler n'est pas très bon en maths. Il a plutôt peur de se faire arnaquer par les bureaux de change pendant son voyage, et il aimerait que tu lui crées un calculateur de devises. Voici ses spécifications pour l'application :

1. Estime la valeur après l'échange

Crée la fonction exchange_money(), qui prend 2 paramètres :

  1. budget : la somme d'argent que tu prévois d'échanger.
  2. exchange_rate : la somme en monnaie nationale qui équivaut à une unité de devise étrangère.

Cette fonction doit renvoyer la valeur de la devise échangée.

Remarque : si ta monnaie est l'USD et que tu veux échanger des USD contre des EUR avec un taux de change de 1.20, alors 1.20 USD == 1 EUR.

>>> exchange_money(127.5, 1.2)
106.25

2. Calcule la monnaie restante après un échange

Crée la fonction get_change(), qui prend 2 paramètres :

  1. budget : la somme d'argent avant l'échange.
  2. exchanging_value : la somme d'argent prélevée sur le budget pour être échangée.

Cette fonction doit renvoyer la somme d'argent qui reste du budget.

>>> get_change(127.5, 120)
7.5

3. Calcule la valeur des billets

Crée la fonction get_value_of_bills(), qui prend 2 paramètres :

  1. denomination : la valeur d'un seul billet.
  2. number_of_bills : le nombre total de billets.

Ce bureau de change ne traite qu'avec des espèces selon certaines coupures. La somme totale que tu reçois doit être divisible par la valeur d'un « billet » ou d'une unité, ce qui peut laisser une fraction ou un reste. Ta fonction doit renvoyer uniquement la valeur totale des billets (sans les montants fractionnaires) que le bureau te rendrait. Malheureusement, le bureau garde le reste et la monnaie en prime.

>>> get_value_of_bills(5, 128)
640

4. Calcule le nombre de billets

Crée la fonction get_number_of_bills(), qui prend amount et denomination.

Cette fonction doit renvoyer le nombre de billets que tu peux recevoir pour un amount donné. En d'autres termes : combien de billets entiers tiennent dans la somme de départ ? Rappelle-toi : tu ne peux recevoir que des billets entiers, pas des fractions de billet, alors n'oublie pas de diviser en conséquence. En pratique, tu arrondis à l'inférieur au billet ou à la coupure entière la plus proche.

>>> get_number_of_bills(127.5, 5)
25

5. Calcule le reste après l'échange en billets

Crée la fonction get_leftover_of_bills(), qui prend amount et denomination.

Cette fonction doit renvoyer le montant restant qui ne peut pas être rendu à partir de ton amount de départ, compte tenu de la coupure des billets. Il est très important de savoir exactement combien le bureau garde pour lui.

>>> get_leftover_of_bills(127.5, 20)
7.5

6. Calcule la valeur après l'échange

Crée la fonction exchangeable_value(), qui prend budget, exchange_rate, spread et denomination.

Le paramètre spread est le pourcentage prélevé en frais de change, écrit sous forme d'entier. Il faut le convertir en décimal en le divisant par 100. Si 1.00 EUR == 1.20 USD et que le spread est 10, le taux de change réel sera le suivant : 1.00 EUR == 1.32 USD, car 10 % de 1,20 font 0,12, et ces frais supplémentaires s'ajoutent à l'échange.

Cette fonction doit renvoyer la valeur maximale de la nouvelle devise après avoir calculé le taux de change plus le spread. N'oublie pas que la coupure de la devise est un nombre entier, et qu'elle ne peut pas être subdivisée.

Remarque : la valeur renvoyée doit être de type int.

>>> exchangeable_value(127.25, 1.20, 10, 20)
80
>>> exchangeable_value(127.25, 1.20, 10, 5)
95
Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet
Python Exercism

Prêt à commencer Échange de devises ?

Inscris-toi sur Exercism pour apprendre et maîtriser Python avec 17 concepts146 exercices, et un vrai mentorat humain, le tout gratuitement.