1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| def rendre_monnaie(prix, x20, x10, x5, x2, x1):
"""
Args:
prix (int): somme à déterminer selon la monnaie dispo
x20 (int): n billets de 20
x10 (int): n billets de 10
...
Returns:
list of numbers of billets of 20, 10, 5, 2 and 1 in this order
"""
billets = [
(x20, 20),
(x10, 10),
(x5, 5),
(x2, 2),
(x1, 1)
]
somme = prix
total = sum([x*y for x, y in billets])
if total < prix:
return None
resultat = []
total = 0
for n, valeur in billets:
count = 0
while prix // valeur >= 1 and n and prix:
count += 1
total += valeur
prix = somme - total
n -= 1
resultat.append(count)
res20, res10, res5, res2, res1 = resultat
return res20, res10, res5, res2, res1
print(rendre_monnaie(85, 3, 1, 1, 5, 5)) # [3, 1, 1, 5, 0]
# 3 billets de 20,
# 1 billet de 10,
# 1 billet de 5,
# 5 pièces de 2
# aucune pièce de 1 |
|