2016-10-13 53 views
-1

我试图找到具有给定坐标的10点多边形的周长。具有给定坐标的多边形的周长

这是香港专业教育学院得到了迄今为​​止

但不断收到错误

poly = [[31,52],[33,56],[39,53],[41,53],[42,53],[43,52],[44,51],[45,51]] 
x=row[0] 
y=row[1] 

``def perimeter(poly): 
    """A sequence of (x,y) numeric coordinates pairs """ 
    return abs(sum(math.hypot(x0-x1,y0-y1) for ((x0, y0), (x1, y1)) in segments(poly))) 

    print perimeter(poly) 
+0

看起来像一个8点多边形。什么是'segments()'?请发布所有相关代码。另外 - 为什么'abs'?距离已经是正面的。另外 - 你的缩进似乎是错误的。最后的'print'不应该缩进。 –

+0

IM到蟒很新,IVE作出这些变化,但我不知道如何定义列表中的元素x和对于聚ÿ [X,Y] DEF周长(聚): “”“的序列(x0,y0),(x1,y1))的数值坐标对(“x”,“y”)的数值坐标对的组合(“x”,“y”) print ) – jono

+0

你得到了什么错误?什么行?只是说你继续得到一个错误是没有意义的。什么是'segments()'?没有看到代码,任何人都很难说出任何东西(超出缩进问题)。 –

回答

0

poly是一个列表,以索引的元素在此列表中,您需要提供一个单一的指标,而不是一个这是为什么poly[x,y]是语法错误。元素是长度为2的列表。如果p是其中一个元素,那么对于该点(x,y) = (p[0],p[1])。以下可能会给你一个想法。 enumerate允许您同时遍历索引(需要获取多边形中的下一个点)和点:

>>> for i,p in enumerate(poly): 
    print(str(i) + ": " + str((p[0],p[1]))) 


0: (31, 52) 
1: (33, 56) 
2: (39, 53) 
3: (41, 53) 
4: (42, 53) 
5: (43, 52) 
6: (44, 51) 
7: (45, 51)