我正在使用graphics.py lib,需要根据用户想要的数量创建多个多边形(比方说4)。
我只需要知道如何为每个多边形创建一个唯一的名称,例如polygon1,polygon2,polygon4,polygon5。
感谢。
答案 0 :(得分: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
如果你认为你宁愿让每个名字成为一个新的变量......这是一个坏主意。 You don't want to dynamically create variables,因为您想要keep data out of your variable names。
实际上,这里根本不需要名字。这会创建一个count
多边形列表:
polygons = [Polygon(whatever) for _ in range(count)]
现在,如果您需要按号码访问它们,请执行以下操作:
polygons[2]
(虽然请注意列表是基于0的,而不是基于1的。)
或者,如果您需要访问所有这些内容,那么您就拥有了整个列表,因此您无需在任何地方继续编写(polygon1, polygon2, polygon3, polygon4)
;只是polygons
。
答案 1 :(得分:1)
您可以将其作为列表处理
polygon = []
polygon.append(...)
并将其作为
访问polygon[2]
答案 2 :(得分:1)
糟糕的方式:
您可以使用exec
。
for i in range(5):
exec("polygon%d = Polygon(something)"%i)
这是非常安全的,因为i
if只是一个整数。但是使用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
希望这会有所帮助!!