python-3.x 没有“abs”函数如何求绝对值?

mm5n2pyu  于 2023-01-18  发布在  Python
关注(0)|答案(6)|浏览(210)
def my_abs(value):
"""Returns absolute value without using abs function"""
    if value < 5 :
        print(value * 1)
    else:
        print(value * -1)
print(my_abs(3.5))

到目前为止,这是我的代码,但测验打印,例如-11.255和200.01,并希望相反的结果,例如它希望返回11.255和-200.01

jutyujz0

jutyujz01#

num = float(input("Enter any number: "))
if num < 0 :
    print("Here's the absolute value: ", num*-1)
elif num == 0 :
    print("Here's the absolute value: 0")
elif num > 0 :
    print("Here's the absolute value: ", num)
afdcj2ne

afdcj2ne2#

5和绝对值有什么关系?
按照你的逻辑:

def my_abs(value):
    """Returns absolute value without using abs function"""
    if value <= 0:
        return value * -1
    return value * 1

print(my_abs(-3.5))
>> 3.5
print(my_abs(3.5))
>> 3.5

还有其他较短的解决办法,可以在其他答复中看到。

s2j5cfk0

s2j5cfk03#

到目前为止的解决方案都没有考虑到有符号的零,在所有这些解决方案中,输入0.0或-0.0都会得到-0.0。
下面是一个简单而(据我所知)正确的解决办法:

def my_abs(value):
    return (value**2)**(0.5)
axzmvihb

axzmvihb4#

有理数的一个简单解法是

def my_abs(value):
    if value<0:
        return -value
    return value
n3h0vuf2

n3h0vuf25#

为什么要检查if value < 5
无论如何,要复制abs功能:

def my_abs(value):
    return value if value >=0 else -1 * value
mu0hgdu0

mu0hgdu06#

一个有趣的例子。if(number〈0)返回一个布尔值,但当你用它做数学运算时,它是1或0。下面写为(a〈0)
当这个数小于0时,我们可以通过加上2乘以它自己的负数来得到它的正值。或者只是减去它自己两次,写成(-a-a)
所以当条件失败时它返回0乘以任何值都是0所以我们不给原始数加任何值.
如果我们的条件成立,我们会得到一个2倍的正数,这样我们就可以把它加到原始值上。
这是代码,在本例中,您要获取绝对值的数字是a

a = a + (a<0) * (-a-a)

这比内置的abs()调用运行得慢。我认为它更快,但当我计时时,它在我的代码中有错误。最快的似乎是if(a〈0)then a = -a

相关问题