-3

如何使用 for 循环在 python 3.2 中用数字增加变量名?
p 是玩家,可以是 1 或 2。p1 和 p2 是每个玩家的不同符号。

    p = 1
    p1 = x
    p2 = i
    for c in range(1,3):
        input('Player {} ({}), ...? '.format(p,(locals()['p'+str(p)])))

这个 locals() 函数正在制作一个字典,但我希望它是变量名。如何?

4

2 回答 2

2

Data is stored in data structures, not variable names. Use a dict, list or any other data structure.

players = []

for c in range(1,3):
        pl = input('Player P{} ...? '.format(c)
        players.append(pl)

print players[2]
于 2012-12-07T21:50:37.813 回答
0

您可以使用一个简单的类来容纳玩家。这是一个示例,可让您按字面意思请求玩家,或传递可变数字。

class Players:
    def __init__(self, players):
        self.__dict__ = {"p{}".format(i+1):p for i,p in enumerate(players)}
    def __getitem__(self, item):
        return self.__dict__["p{}".format(item)]

p = Players(["player 1 obj", "player 2 obj"])

# equivalent 
print p.p2
print p[2]
于 2012-12-07T21:53:58.160 回答