0

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

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

谁能给个提示谢谢!!

4

3 回答 3

5

您通常会将这些值保留在列表或字典中:

badninjas = [badninja1, badninja2, badninja3]

并将它们的位置信息与对象一起badninja保存:

for ninja in badninjas:
    screen.blit(ninja, (ninja.px, ninja.py))

可以globals()使用or结果(都返回映射)动态查找变量,locals()但一般来说,您应该避免这种行为。这里当然不需要它。

于 2013-11-04T10:41:37.787 回答
3

解决方案是不要在变量名中使用数字。请改用列表:

badninja = [firstitem, seconditem, thirditem, ...]   

现在您可以传递badninja[0]给您的函数以指定第一项等。

于 2013-11-04T10:41:11.973 回答
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]))
于 2013-11-04T10:43:09.760 回答