2012-02-26 9 views
0

파이썬에서 선 세그먼트의 길이를 계산하고 있는데 왜 코드 조각 하나가 제로를주고 다른 하나는 올바른 대답을 제공하는지 이해할 수 없습니다.파이썬 버그 거리 계산식

이 코드 조각은 나에게 제로를 제공합니다

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) 

감사합니다 :

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

이 사람이 나에게 정답을 제공합니다. 첫 번째 조각에서

+0

왜 '^'연산자를 사용하고 있습니까? 그 운영자가 뭐라 생각하니? –

답변

8

당신이 쓴 :

는 파이썬에서 전원 운영자는하지 ^ 입니다
ans^(1/2) 

, 즉 XOR - 연산자입니다. 파이썬의 전력 연산자는 **입니다. 그 중 파이썬 2.x에서는 기본적으로 두 정수의 나눗셈 결과가 정수이므로 1/20으로 평가됩니다. 올바른 방법이 될 것이다 :

ans ** 0.5 

그리고 또 하나, 여기에 구현 한 함수는 math.hypot에 훨씬 쉽게 수행 할 수 있습니다

import math 

def distance(a, b): 
    return math.hypot(b[0] - a[0], b[1] - a[1]) 
0

는 XOR 인 x**2 아니라 (x^2보다 일을보십시오)

또는

그리고 또한 math.pow 기능을 사용, 1/2은 0이 아니며 0.5