如何根据python 2.7中的用户输入创建未知数量的变量(即基于玩家数量的玩家名称)?

时间:2017-08-26 00:58:57

标签: python-2.7 variables

我是一个菜鸟,正在制作Yahtzee游戏,我编写了多人游戏。在Python 2.7中,我希望有一个提示,用户可以输入玩家的数量,即2,3,4,2007等,之后输入的玩家数量,即3,用户将输入名称球员,即迈克,汤姆,吉姆,然后我可以在我的计划中使用以保持得分(即迈克的得分是7,他非常糟糕,吉姆有250,他很漂亮好等)。我已经看到了使用字典,类和数组的建议,但是我最后哪个是最好的,最糟糕的是,我不能做出我正在努力工作的东西。

from collections import defaultdict
d = defaultdict(int)

d = {}

players = raw_input('How many players?')
players = int(players)

for i in range (1,players+1):
  d = raw_input('Enter player name')

print d

my code on Repl.it is here

2 个答案:

答案 0 :(得分:0)

在你的for循环中,你将玩家输入的任何内容作为名称分配给d。因此,d立即不再引用任何字典,而是字符串......无论名称是什么。特定变量一次只能引用一个对象。从逻辑上讲,如果你考虑将变量重新分配给新变量时会发生什么,这是直截了当的,当提供的所有对象都是标签d时,解释器如何可能区分多个可能的对象。

尝试这样的事情,dict对我来说似乎很好:

players_dict = {}

num_players = raw_input("Enter number of players: ")

for i in num_players:
    name = raw_input("Enter name for player %s:" % i)
    # set initial score to 0
    players_dict[name] = 0

答案 1 :(得分:0)

谢谢大家的帮助。在你的帮助下,我想出了下面的代码(使用一个列表并附加到它上面),它起作用了:

player_names = []

input_players = int(raw_input('how many players?'))

for i in range(0,input_players):
  name = raw_input('enter player name')
  name = name.upper()
  player_names.append(name)

#using my new player names to iterate through turns:

for i in range(0,13):
  for i in player_names:
    print i # placeholder for my turn function