2012-02-26 75 views
0

我正在計算python中的一段線段的長度,但我不明白爲什麼一段代碼給我零,另一段給出了正確的答案。python bug中的距離公式

這段代碼給了我零:

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) 

謝謝。

+0

爲什麼使用'^'運算符?你認爲那個操作員做什麼? – 2012-02-26 15:02:49

回答

8

在你的第一個片段,你寫了這個:

ans^(1/2) 

在Python冪運算符是^,這就是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

嘗試做x**2而不是x^2(這是XOR )

或者使用math.pow功能

並且也1/2爲0而不是0.5