Декораторы · 6 из 21
Рубли для старых расчётов
Старые расчёты отделения писали ещё под кассовый аппарат: они принимают сумму в копейках — целым числом — и возвращают копейки. Новые окна работают в рублях с копейками после точки. Переписывать расчёты Зинаида Петровна не даёт: «работают — не трогай». Значит, каждый старый расчёт надо обернуть.
Что сделать
Оберните старый расчёт в копейках так, чтобы он принимал и отдавал рубли.
Что приходит
raschet— старый расчёт: принимает целые копейки и возвращает копейки
Что вернуть
Новую функцию: принимает рубли, переводит их в целые копейки через round, зовёт raschet и отдаёт его ответ в рублях.
Допишите функцию v_rublyah в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
Старый расчёт s_nadbavkoy прибавляет к сумме пятую часть целым делением. v_rublyah(s_nadbavkoy)(12.5) переводит 12,5 ₽ в 1250 копеек, старый расчёт даёт 1250 + 250 = 1500 копеек, и обёртка возвращает 15.0.
v_rublyah(raschet) возвращает новую функцию одного довода — суммы в рублях, обычно дробной. Новая функция:
- переводит рубли в копейки: умножает на 100 и округляет до целого функцией
round; - зовёт
raschetс этим целым числом; - возвращает ответ
raschet, делённый на 100 обычным делением.
Старые расчёты ждут именно целое: 1999, а не 1999.0.
Образцовый тест целиком
def s_nadbavkoy(kopeyki):
return kopeyki + kopeyki // 5
v_rublyah(s_nadbavkoy)(12.5)
15.0
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.