После вывода монет номиналом 1 цент из обращения магазинам пришлось менять цены на товары, чтобы они были кратны 5 центам.
Программа должна запрашивать ввод цены, пока пользователь не введет пустую строку. После этого в первой строке вывести общую сумму покупок, на второй — округленное значение до пяти ближайших центов. Для вычисления можно предварительно перевести полученную сумму в центы и получить остаток от деления на 5. Если остаток меньше 2,5 округление осуществлять в меньшую сторону, если больше – в большую.
PENNIES_PER_NICKEL = 5 NICKEL = 0.05 # переменная для хранения сумы total = 0.00 # Запрашиваем цену первого товара как строку line = input("Введите цену товара (пустая строка для выхода): ") # Продолжаем запрашивать цены, пока не будет введена пустая строка while line != "": # Добавляем цену в общей сумме (после перевода ее в число с плавающей запятой) total = total + float(line) # Запрашиваем цену следующего товара line = input("Введите цену товара (пустая строка для выхода): ") # Показываем полную сумму к оплате print("Полная сумма к оплате: %.02f" % total) # Считаем, сколько центов осталось бы, если бы мы оплатили всю покупку 5–центовыми # монетами rounding_indicator = total * 100 % PENNIES_PER_NICKEL if rounding_indicator < PENNIES_PER_NICKEL / 2: # Если оставшаяся сумма центов меньше 2,5, округляем значение путем вычитания # полученного количества центов из общей суммы cash_total = total - rounding_indicator / 100 else: # Иначе добавляем 5 центов и затем вычитаем нужное количество центов cash_total = total + NICKEL - rounding_indicator / 100 # Выводим итоговую сумму для оплаты print("Сумма для оплаты наличными: %.02f" % cash_total)