формула расстояния в ошибке питона - PullRequest
0 голосов
/ 26 февраля 2012

Я вычисляю длину отрезка в Python, но я не понимаю, почему один фрагмент кода дает мне ноль, а другой дает правильный ответ.

Этот кусок кода дает мне ноль:

def distance(a, b):
    y = b[1]-a[1]
    x = b[0]-a[0]
    ans=y^2+x^2
    return ans^(1/2)

Этот дает мне правильный ответ:

import math as math

def distance(a, b):
    y = b[1]-a[1]
    x = b[0]-a[0]
    ans=y*y+x*x
    return math.sqrt(ans)

Спасибо.

Ответы [ 2 ]

8 голосов
/ 26 февраля 2012

В своем первом фрагменте вы написали следующее:

ans^(1/2)

В Python оператор power равен , а не ^, это оператор XOR .Оператор власти в Python - **.Кроме того, в Python 2.x по умолчанию результатом деления двух целых чисел является целое число, поэтому 1/2 будет оцениваться как 0.Правильный путь был бы следующим:

ans ** 0.5

И еще одна вещь: реализованную здесь функцию можно сделать намного проще с помощью math.hypot:

import math

def distance(a, b):
    return math.hypot(b[0] - a[0], b[1] - a[1])
0 голосов
/ 26 февраля 2012

Попробуйте сделать x**2 вместо x^2 (что является XOR)

Или используйте функцию math.pow

А также, 1/2 равно 0, а не 0.5

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