Функции · 21 из 29
Повторить попытку
Задействованы также: Ошибки и исключения
Программа диагностики иногда не отвечает с первого раза: то разъём, то связь. Валера жмёт кнопку по три раза, и это надо автоматизировать.
Что сделать
Нажимайте за Валеру кнопку диагностики, пока программа не ответит, — но не бесконечно.
Что приходит
rabota— функция без аргументов; иногда падает с ошибкойpopytok— сколько раз пробовать; если не передали — 3
Что вернуть
Результат первого удачного вызова; все попытки упали — None.
Допишите функцию s_povtorami в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
kapriznaya падает два раза, а на третий отвечает «готово». Ваша функция зовёт её трижды и отдаёт "готово" — счётчик вызовов показывает 3.
Функция принимает другую функцию без аргументов и число попыток (целое больше нуля, по умолчанию 3). Вызывает её, пока она не отработает без ошибки, но не больше заданного числа раз. Возвращает результат удачного вызова. Если все попытки кончились ошибкой, возвращает None.
Образцовый тест целиком
schetchik = {"n": 0}
def kapriznaya():
schetchik["n"] += 1
if schetchik["n"] < 3:
raise ValueError("не отвечает")
return "готово"
(s_povtorami(kapriznaya), schetchik['n'])
('готово', 3)
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.