如何使用python查找线段的长度

时间:2018-05-28 15:16:57

标签: python line

我想用Python计算(任意数量)线段的长度。我使用了以下代码,但我遇到了元组不能作为操作数的减法。我怎么能克服这个?我想知道我是否错过了任何重要的Python概念。

def perfect_square?(x)
  # Implementation
end

3 个答案:

答案 0 :(得分:2)

如前所述,它必须是Point(*p) Point(*args)的整数。后者会将所有点元组传递给每个点的构造函数。不过,您还必须修复distance

def __init__(self, *args):
    self.args=[Point(*p) for p in args]

def distance(p1, p2):
    return math.sqrt((p1.x-p2.x)**2 + (p1.y-p2.y)**2)

然而,不是创建自己的Point类,而是重要的Python概念"您可以使用内置complex numbers,使distance更加简单:

def __init__(self, *args):
    self.args=[complex(*p) for p in args]

def distance(p1, p2):
    return abs(p1 - p2)

答案 1 :(得分:0)

Python不支持元组的取幂(和其他数学运算)。虽然可以使用这样的代码:

FORM::open

它不是整个元组的矢量计算。它只是元组串联的语法糖。

此外,该片段似乎还有一些错别字/错误。

print (1, 2) * 3 # produces (1, 2, 1, 2, 1, 2) print (1, 2) + (1, 2) # produces (1, 2, 1, 2) 行应该是self.args=[Point(*args) for p in args]

班级self.args=[Point(*p) for p in args]没有LineString方法。

move()计算应略微更改(请注意我已在公式中将distance()替换为-):

+

答案 2 :(得分:0)

数学模块为此目的提供了虚伪功能

  

math.hypot(x,y)

     

返回欧几里得范数sqrt(x x + y y)。这是向量从原点到点(x,y)的长度。

这是我的建议

return math.hypot(p1.x - p2.x, p1.y - p2.y)