Округление до 5 центов

После вывода монет номиналом 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)




Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: