如何使用for循环添加参数元素?

时间:2013-02-02 09:17:28

标签: python

使用cs1graphics模块,我创建了一个包含4个Point对象的List。我想使用List对象中的Points绘制一个Polygon,方法是在每次迭代时(在for循环中)将List中的一个元素添加到Polygon参数中。列表中的Point对象需要在Polygon中叠加在一起才能绘制出整个东西。实际发生的是来自List中位置的Point对象将覆盖上一次迭代中的前一个对象。最后,我最终“绘制”一个点(即列表中的最后一个点)。我该如何解决这个问题?

编辑:我尝试使用.append但是将所有参数转换为List对象,显然我无法绘制列表。

self._list = [Point(200,200),Point(400,200),Point(400,400),Point(200,400),Point(200,200)]
    for i in range(4):
        self._poly = Polygon(self._list[i],)

4 个答案:

答案 0 :(得分:0)

两个

self._list = [Point(200,200),Point(400,200),Point(400,400),Point(200,400),Point(200,200)]
self._poly = Polygon(self._list)

self._list = [Point(200,200),Point(400,200),Point(400,400),Point(200,400),Point(200,200)]
self._poly = Polygon(*self._list)

会奏效。不需要循环。

如果您坚持在循环中逐步构建多边形,则可以执行以下操作:

self._list = [Point(200,200),Point(400,200),Point(400,400),Point(200,400),Point(200,200)]
self._poly = Polygon()
for point in self._list:
    self._poly.addPoint(point)

答案 1 :(得分:0)

只需传入列表本身,如下所示:

self._list = [Point(200,200),Point(400,200),Point(400,400),Point(200,400)]
self._poly = Polygon(self._list)

请注意don't need the last point

  

最后一个点自动连接回第一个点以关闭多边形。

答案 2 :(得分:0)

我认为你想要的是:

self._poly = Polygon(*self._list)

*将列表解压缩为参数,并将它们作为单独的参数传递给函数。

您也可以直接传递积分列表。

self._poly = Polygon(self._list)

它也会起作用。

答案 3 :(得分:0)

如果你想要一个前4个点的多边形:

self._poly = Polygon(* self._list [:4])

在您的代码中,您创建了4个多边形,每个多边形都有一个Point。