有没有办法可以从列表中专门选择以获取数字

时间:2017-11-02 22:45:49

标签: python

我已经开始在python中制作一个小游戏了,但是我遇到了一个有问题的问题。这是我现在正在运行的代码。

我想要做的是,在洗牌之后,给他们分配一个号码(我正在使用它),然后我希望能够选择一个号码(在这种情况下为0-3,因为那里)是4个角色:投资,一,二,三)它会告诉我我选择了哪个号码以及谁被分配到该号码(例如我会选择2,它会告诉我"三"被分配到2)。

Roles = ["Investigator","One","Two","Three"]
random.shuffle(Roles)
n = random.randint(0,len(Roles)-1)
print(n+1)
print(Roles[n])
----------------------

2 个答案:

答案 0 :(得分:0)

您可以使用字典:

import random
Roles = ["Investigator","One","Two","Three"]
random.shuffle(Roles)
final_data = {}
for i in range(len(Roles)):
   while True:
      val = random.randint(0,len(Roles)-1)
      if val not in final_data:
          final_data[val] = Roles[i]
          break

然而,替代原始想法的解决方案:

final_data = {i:a for i, a in enumerate(Roles)}

答案 1 :(得分:0)

您也可以在改组后enumerate角色,然后使用random.choice从该枚举中选择一个(index, value)对。

>>> roles = ["Investigator","One","Two","Three"]
>>> random.shuffle(roles)
>>> roles = list(enumerate(roles))
>>> roles
[(0, 'Three'), (1, 'Two'), (2, 'Investigator'), (3, 'One')]
>>> random.choice(roles)
(2, 'Investigator')