sqrt: ValueError: ошибка математического домена - PullRequest
4 голосов
/ 19 января 2011

У меня проблема с "distance ValueError: math domain error" при использовании функции sqrt в python.

Вот мой код:

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 ]

11 голосов
/ 19 января 2011

Ваша проблема в том, что возведение в степень в 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
6 голосов
/ 19 января 2011

Степенная функция в Python: **, а не ^ (что является побитовым xor).Так что используйте x3**2 и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...