Декораторы · 4 из 19
Адрес заглавными
На посылках адрес пишут как придётся: « ул. садовая, 5 », «УЛ. Садовая,5». Сортировочный аппарат отделения читает только заглавные буквы и спотыкается о пробелы по краям. Функций, которые принимают адрес первым аргументом, в программе окна №3 с десяток — наклейка, квитанция, опись, — и Зинаида Петровна просит не чинить их по одной.
Что сделать
Напишите декоратор, который перед вызовом приводит первый аргумент — адрес — к заглавным буквам без пробелов по краям.
Что приходит
f— функция, у которой адрес — первый аргумент; остальные аргументы у неё бывают любыми
Что вернуть
Новую функцию: она зовёт f, подставив вместо адреса adres.strip().upper(), остальное передаёт как пришло и возвращает ответ f.
Допишите функцию adres_zaglavnymi в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
Функция naklejka(adres, indeks) склеивает «индекс, адрес». Обёрнутая @adres_zaglavnymi, на адресе « ул. садовая, 5 » она отдаёт '190000, УЛ. САДОВАЯ, 5'.
Обёртка получает адрес первым позиционным аргументом, а за ним — любые позиционные и именованные. Адрес она заменяет на adres.strip().upper(): пробелы по краям уходят, внутри остаются как были. Остальные аргументы идут в f без изменений — даже если это строки. Возвращает обёртка то, что вернула f.
Образцовый тест целиком
@adres_zaglavnymi
def naklejka(adres, indeks):
return indeks + ", " + adres
naklejka(" ул. садовая, 5 ", "190000")
'190000, УЛ. САДОВАЯ, 5'
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.