-3

Python 3.2でforループを使用して変数名を数値でインクリメントするにはどうすればよいですか?
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

データは、変数名ではなく、データ構造に格納されます。辞書、リスト、またはその他のデータ構造を使用します。

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 に答える