用户定义的获取绝对值的函数

时间:2014-08-16 05:45:25

标签: python function absolute-value

使用 Wing ide 3.3.5

我如何编写一个函数my_abs(value)来返回其x的绝对值,而不使用Python中的内置abs函数。

例如:

Test                Result
print(my_abs(3.5))  3.5
print(my_abs(-7.0)) 7.0

2 个答案:

答案 0 :(得分:2)

一个讽刺的答案是使用内置的__abs__()函数:

>>> print((-7.0).__abs__())
7.0

这是一个天真的单行(基本上相当于@Nabin的答案):

def simple_abs(num):
    return -num if num < 0 else num

然而,事实证明存在一个错误,因为

>>> -0.0 < 0
False
>>> simple_abs(-0.0)
-0.0                        ← Buggy
>>> abs(-0.0)
0.0                         ← Correct

事实证明testing for negative zero in Python很难做到。一个可能的测试是str(-0.0) == '-0.0'。以下是@JasonS帮助我提出的建议:

import math

def my_abs(num):
    return -num if math.copysign(1, num) < 0 else num

或者,更长,更易读的形式:

def my_abs(num):
    if math.copysign(1, num) < 0:
        return -num
    else:
        return num

答案 1 :(得分:0)

一个简单的算法将是:

if number<0:
    return number*-1
else:
    return number

您必须检查数字是否为负数。是这样,然后将它乘以-1并返回。或者您必须在不做更改的情况下返回该号码。