我对python有点疑问。
我有一段代码
screen.blit(badninja1,(badninja1px ,badninja1py))
screen.blit(badninja2,(badninja2px ,badninja2py))
screen.blit(badninja3,(badninja3px ,badninja3py))
我知道它重复了3次,我想做一些重构。
这是一段python代码 它的作用是在badninja1px和badninja1py等地点绘制badninja1。 bandninja1,badninja1px,badninja1py等是变量名。
我想把这段代码放在for循环中
for x in range(1, 4):
#add number 1, 2, 3 to the variable name.
我尝试这样做,并意识到我可以在python中轻松组合字符串:
"Dec "+str(25)+"th".
但是,更改变量名称有点棘手。
任何人都可以给你一个提示谢谢!!
答案 0 :(得分:5)
您通常会将这些值保留在列表或词典中:
badninjas = [badninja1, badninja2, badninja3]
并使用 badninja
个对象保存其位置等信息:
for ninja in badninjas:
screen.blit(ninja, (ninja.px, ninja.py))
你可以动态查找变量,使用globals()
或locals()
结果(都返回映射)但一般来说你应该避免这种行为。这当然不需要。
答案 1 :(得分:3)
解决方案是不使用变量名中的数字。改为使用列表:
badninja = [firstitem, seconditem, thirditem, ...]
现在您可以将badninja[0]
传递给您的函数以指定第一项等。
答案 2 :(得分:0)
不是显式调用变量,而是将它们放在列表中,然后迭代这个:
my_list = [(badninja1, badninja1px ,badninja1py),
(badninja2, badninja2px ,badninja2py),
(badninja3, badninja3px ,badninja3py)]
for item in my_list:
screen.blit(item[0], (item[1], item[2]))