Напишите функцию choice, принимающую, неопределенное количество целых чисел, а также один из именованных параметров: min или max.
В качестве именованных параметров вам будут предоставлены функции.
Если же, передан max – максимальный.
Если был, передан параметр min, ваша функция должна вернуть минимальный из результатов применения переданной функции к позиционным аргументам.
Примечание
В решении не должно быть вызовов требуемых функций.
Пример
Ввод
result = choice(1, 2, 3, 4, 5, max=lambda x: 2 ** x)Вывод
result = 32Ввод
result = choice(321, 87, 1000, -23, min=lambda x: len(str(x)))Вывод
result = 2Решение
После чтения подсказки особо делать нечего — проверяем ссылку на какую функцию нам передали в качестве аргумента, после чего организуем вызов функции с каждым из позиционных параметров при помощи функции map().
Посмотреть код
Решение
Python
def choice(*args, **kwargs):
# необязательная проверка, упомянутого условия, которая не проверяется в тестах
if set(kwargs.keys()) not in ({"min"}, {"max"}):
raise ValueError(
"Передайте ровно один именованный параметр: min=... или max=..."
)
if "min" in kwargs:
func = kwargs["min"]
minmax = min
else:
func = kwargs["max"]
minmax = max
return minmax(map(func, args))