1

我正在使用 graphics.py 库,需要根据用户想要的数量创建多个多边形(比如说 4 个)。

我只需要知道如何为每个多边形创建一个唯一的名称,例如多边形 1、多边形 2、多边形 4、多边形 5。

谢谢。

4

3 回答 3

2

如果你真的想这样做,你可以:

for i in range(count):
    new_poly = Polygon(whatever)
    new_name = 'polygon{}'.format(i+1)

然后,您必须将新名称和新多边形存储在某处。也许是这样的:

polygons = {}
for i in range(count):
    new_poly = Polygon(whatever)
    new_name = 'polygon{}'.format(i+1)
    polygons[new_name] = new_poly

如果您认为您宁愿将每个名称都设为一个新变量……那是个坏主意。您不想动态创建变量,因为您希望将数据保留在变量名之外

真的,这里根本不需要名字。这将创建一个count多边形列表:

polygons = [Polygon(whatever) for _ in range(count)]

现在,如果您需要按号码访问它们,只需执行以下操作:

polygons[2]

(尽管请注意列表是基于 0 的,而不是基于 1 的)。

或者,如果您需要访问所有这些,您已经获得了整个列表,因此您不必(polygon1, polygon2, polygon3, polygon4)到处写;只是polygons

于 2013-10-25T02:07:15.150 回答
1

坏方法:

您可以使用exec.

for i in range(5):
    exec("polygon%d = Polygon(something)"%i)

这是非常安全的,因为iif 只是一个整数。但是使用exec是一种非常糟糕的做法,因为它非常脆弱。用户可以输入或意外输入一段代码并弄乱您的记忆。所以,除非你真的必须这样做,否则你不应该使用它。

另外,如果你是全局变量的粉丝,你可以使用它。

globals()["polygon%d"%i] = Polygon(something)

但是也不建议经常使用全局变量。

更好的方式

或者,您可以将其存储在列表或字典中:

for i in range(5):
    lst.append(Polygon(something_else)) #store it in a list
    dict['polygon%d'%i] = Polygon(another_thing) #store it in a dict

希望这可以帮助!!

于 2013-10-25T02:08:25.547 回答
1

您可以将其作为列表处理

polygon = []
polygon.append(...)

并以

polygon[2]
于 2013-10-25T02:07:05.263 回答