python bug中的距离公式

时间:2012-02-26 12:21:04

标签: python distance formula

我正在计算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 个答案:

答案 0 :(得分: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])

答案 1 :(得分:0)

尝试执行x**2而不是x^2(这是异或)

或使用math.pow功能

此外,1/2为0而不是0.5