sqrt: 值错误:数学域错误

4 投票
2 回答
26171 浏览
提问于 2025-04-16 10:14

我在使用Python的sqrt函数时遇到了一个问题,错误信息是"distance ValueError: math domain error"。

这是我的代码:

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 个回答

6

在Python中,幂运算用的是**,而不是^(那个是按位异或运算)。所以你应该用x3**2这样的写法。

11

你的问题是,在Python中,幂运算是用 a ** b 来表示的,而不是用 a ^ b。其实 ^ 是位运算中的异或运算,这样就会导致最终的结果是一个负值,从而引发了域错误。

你修正后的代码是:

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

撰写回答