7. Никаких центов. (в коде есть строки из следующих тем: "функции").

(открыть в новой вкладке)

Условие:

4 февраля 2013 года Королевским канадским монетным двором была выпущена последняя монета номиналом в один цент. После вывода центов из обращения все магазины вынуждены были изменить цены на товары таким образом, чтобы они стали кратны пяти центам (расчеты по банковским картам по-прежнему ведутся с учетом центов). И хотя продавцы вольны сами определять политику преобразования цен, большинство из них просто округлили цены до ближайших пяти центов.
Напишите программу, запрашивающую у пользователя цены, пока не будет введена пустая строка. На первой строке выведите сумму всех введенных пользователем сумм, а на второй – сумму, которую покупатель должен заплатить наличными. Эта сумма должна быть округлена до ближайших пяти центов (т.е. округлённые суммы всех покупок в итоге будут составлять сумму кратную пяти центам без округления).

Код:

def new_price(amount):
    amount_in_cents = int(amount * 100)
    need_mod = amount_in_cents % 5 
    need_mod = 0 if need_mod < 2.5 else 5
    amount_in_cents = (amount_in_cents // 5) * 5 + need_mod
    amount = amount_in_cents / 100
    return amount

print("%50s" % "Вводите суммы покупок в формате xx.xx (для отмены введите 0)")
each_price = list()
each_real_price = list()
count = 1
while True:
    amount = float(input("%51s" % f"Введите сумму {count}-й покупки: "))
    if amount == 0:
        break    
    each_price.append(amount)
    each_real_price.append(new_price(amount))
    count += 1

print()
print("%50s%15.2f" % ("Сумма всех покупок без округления равна:", sum(each_price)))
print("%50s%15.2f" % ("Сумма всех покупок с округлением равна:", sum(each_real_price)))