Разработайте функцию get_repeater, которая принимает некую функцию func и число count.
Результатом работы get_repeater должна быть функция, которая выполняет действие func count раз.
Примечание
В решении не должно быть ничего, кроме выражения.
Пример
Ввод
repeater = get_repeater(lambda x: x + 1, 5)
print(repeater(2))Вывод
7Ввод
repeater = get_repeater(lambda x: x * 2, 10)
print(repeater(1))Вывод
1024Решение
Наша задача создать функцию, которая возвращала бы не результат, а тоже функцию, которая выполнялось бы заданное в качестве параметра первой функции раз. Звучит запутано, не правда ли?
На самом деле все не так страшно и то довольно распространенная практика в современном программировании, чью парадигму можно описать примерно так: все есть указатель на объект.
Итак, создаем функцию get_repeater(func, count) в ней сразу создаем новую функцию repeater(value), которую мы и будем возвращать из первой. Так как функция вложенная, она имеет доступ к родительским переменным. Оттуда нам потребуется count чтобы организовать циклический вызов функции func, оба значения передаются нам в качестве аргументов. А дальше все так же просто, как если бы нас попросили посчитать сумму чисел от 0 до N мы просто в цикле накапливаем результат.
Посмотреть код
Решение
def get_repeater(func, count):
def repeater(value):
result = value
for _ in range(count):
result = func(result)
return result
return repeater