我正在计算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)
谢谢。
答案 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