Декораторы · 2 из 21
Прочерк вместо пустоты
В окне №3 несколько справочных функций: вес посылки по номеру, тариф по индексу, фамилия получателя. Когда данных нет, каждая честно возвращает None — и на квитанции так и печатается «None». Зинаида Петровна требует прочерк, а переписывать каждую справочную функцию не даёт.
Что сделать
Оберните справочную функцию так, чтобы вместо пустого ответа она отдавала прочерк «—».
Что приходит
f— справочная функция одного довода; когда данных нет, она возвращаетNone
Что вернуть
Новую функцию одного довода: она зовёт f и отдаёт её ответ, а вместо None — строку "—".
Допишите функцию procherk в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
Функция ves знает вес посылок 1 и 2. procherk(ves) — новая функция: procherk(ves)(1) отвечает 250, как и сама ves, а procherk(ves)(7) — "—": про седьмую посылку ves ничего не знает и отвечает None.
procherk(f) возвращает новую функцию. Новая функция принимает один довод, зовёт с ним f один раз и возвращает её ответ — кроме случая, когда f вернула None: тогда возвращает строку "—" (длинное тире).
Ноль, пустая строка и False — настоящие ответы, их не заменять: посылка весом 0 — это пустая коробка, а не «нет данных».
Образцовый тест целиком
def ves(nomer):
return {1: 250, 2: 0}.get(nomer)
procherk(ves)(1)
250
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.