J. Наилучший выбор

Напишите функцию 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))
Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии