Я хочу написать функцию, которая вычисляет изменение, которое машина должна предоставить клиенту. Функция получает стоимость продукта, сумму денег, которую дал клиент, и словарь, в котором есть деньги, которые у него есть в машине.Функция, которая вычисляет изменение
Функция должна предоставить наименьший набор монет и векселей и учитывать имеющиеся деньги.
Следует также избегать исхода каких-либо денежных средств; например, если у него есть 2 из 10 евро и 8 из 5 евро, он не должен использовать 2 из 10 евро в том же изменении.
Это мой словарь:
d = {0.01: 10,
0.02: 5,
0.05: 2,
0.1: 10,
0.2: 5,
0.5: 2,
1: 5,
2: 5,
5: 2,
10: 4,
20: 5,
50: 1,
100: 0,
200: 0,
500: 0,
}
и это мой код до сих пор:
def change(cost, given, d):
last_change = 0
change = given - cost #calculates how much we own the customer
if change == 0: #if we don't own the customer anything
return change
else:
if change in d and d[change] != 0: #if change is in the dictionary and its value is not 0 we can give it to the customer
return change
else:
euro = int(change)
cent = change - euro #calculates if we have to give any cents
if cent == 0: #if we only have to give bills
for item in d:
if item > last_change and item < change and d[item] != 0: #biggest bill we can give the customer
last_change = item
Я не знаю, что делать дальше.
Один совет - Дон» t представляют суммы в виде чисел с плавающей запятой - представляют их как целые числа, то есть евроценты в этом случае. – ErikR