Нужна помощь с логической функцией
Функция, которая принимает логическое значение, и если оно положительное, то возвращает лямбда-функцию, которая в свою очередь получает один аргумент (число), и возвращает его абсолютную величину (оно будет всегда положительным). Если число отрицательное, возвращается лямбда функция, получающая один аргумент (число), и всегда возвращает его с минусом.
Ответы (2 шт):
Автор решения: vvvvvvvvvvv
→ Ссылка
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
Автор решения: CrazyElf
→ Ссылка
В дополнение к правильному ответу, можно использовать тернарный оператор, чтобы уменьшить кол-во кода:
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