gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 09:24:06 25 4
gpt4 key购买 nike

使用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

最佳答案

一个尖锐的答案是使用内置的 __abs__()函数替代:

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

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

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

但是,事实证明有一个bug,因为

>>> -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

关于python - 用于获取绝对值的用户定义函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25337313/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com