使用 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
答案 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并返回。或者您必须在不做更改的情况下返回该号码。