Нужна помощь с логической функцией

Рейтинг: 0Ответов: 2Опубликовано: 06.02.2023

Функция, которая принимает логическое значение, и если оно положительное, то возвращает лямбда-функцию, которая в свою очередь получает один аргумент (число), и возвращает его абсолютную величину (оно будет всегда положительным). Если число отрицательное, возвращается лямбда функция, получающая один аргумент (число), и всегда возвращает его с минусом.

Ответы

▲ 3Принят
def func(b):
    if b:
        return lambda y: abs(y)
    return lambda y: -abs(y)


print(func(False)(1)) # -1
print(func(True)(-4)) # 4
▲ 3

В дополнение к правильному ответу, можно использовать тернарный оператор, чтобы уменьшить кол-во кода:

def func(b):
    return (lambda y: abs(y)) if b else (lambda y: -abs(y))

print(func(False)(1)) # -1
print(func(True)(-4)) # 4

Впрочем, сработает даже и вот так, ещё короче:

def func(b):
    return lambda y: (abs(y) if b else -abs(y))

print(func(False)(1)) # -1
print(func(True)(-4)) # 4

Или даже такой выверт:

def func(b):
    return lambda y: (1,-1)[b] * abs(y)

print(func(False)(1)) # -1
print(func(True)(-4)) # 4