可以** 0.5返回一个负数吗?

时间:2016-05-26 18:43:33

标签: python python-2.7

为了找到距离,我使用** 0.5平方根。这是否会返回负数?

def distance(x1, y1, x2, y2):
    return ((x1-x2)**2 + (y1-y2)**2)**0.5

1 个答案:

答案 0 :(得分:5)

是的,该函数可以返回负数。这需要充分破坏输入参数。

class Whack(int):
    def __pow__(self, other, modulo=None):
        if other == 0.5:
            return -42
        return Whack()
    def __sub__(self, other):
        return Whack()
    __add__ = __sub__

演示:

>>> x1 = y1 = x2 = y2 = Whack()
>>> distance(x1, y1, x2, y2)
-42

如果你限制传入正常的'数字如python的内置浮点数或整数,则答案是否定它不能返回负数,因为它们不在数学运算**0.5的范围内。