如何在不调用abs的情况下将a加到b的绝对值上

0 投票
2 回答
4751 浏览
提问于 2025-04-17 01:01

我在定义一个函数时遇到了一点小问题。我想在不使用abs函数的情况下,把a加到b的绝对值上。

from operator import add, sub
def a_plus_absolute_b(a, b):
    """Return a+abs(b), but without calling abs."""
    if b < 0:
        op = add(a, (b * -1))
    else:
        op = add(a, b)
    return op(a, b)

2 个回答

5

你正在寻找的解决方案,其实你没有注意到,因为你太专注于“负数”这个想法,具体如下:

from operator import add, sub
def a_plus_absolute_b(a, b):
    """Return a+abs(b), but without calling abs."""
    if b < 0:
        op = sub
    else:
        op = add
    return op(a, b)

注意到,调用函数时,括号只出现在最后一行。

7

你不需要导入 add() 这个函数。

你为什么不直接这样做呢

def a_plus_absolute_b(a, b):
    """Return a+abs(b), but without calling abs."""
    if b < 0:
        result = a - b
    else:
        result = a + b
    return result

撰写回答