sqrt:ValueError:数学域错误

时间:2011-01-19 12:52:40

标签: python math

在python中使用distance ValueError: math domain error函数时,我遇到了“sqrt”的问题。

这是我的代码:

from math import sqrt

def distance(x1,y1,x2,y2):
    x3 = x2-x1
    xFinal = x3^2
    y3 = y2-y1
    yFinal = y3^2
    final = xFinal + yFinal
    d = sqrt(final)
    return d

2 个答案:

答案 0 :(得分:11)

您的问题是Python中的取幂是使用a ** b完成而不是a ^ b^是按位XOR),这会导致final为负值,从而导致域错误。

您的固定代码:

def distance(x1, y1, x2, y2):
     return ((x2 - x1) ** 2 + (y2 - y1) ** 2) ** .5 # to the .5th power equals sqrt

答案 1 :(得分:6)

Python中的幂函数是**,而不是^(这是位xor)。所以使用x3**2等。