python变量名称更改

时间:2013-11-04 10:38:36

标签: python string variables

我对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".

但是,更改变量名称有点棘手。

任何人都可以给你一个提示谢谢!!

3 个答案:

答案 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]))