为名称指定一个数字,而不根据该数字枚举和打印名称

时间:2017-11-13 09:13:59

标签: python python-3.x

我要做的是使用n作为列表“角色”中的字符数,打印出数字n和旁边的角色。有没有办法我可以稍后,根据我要求的数字,得到一个“分配”到该数字的字符。我尝试使用enumerate,但是我以后无法使用if / while / for或者如果我想打印它们来调用枚举的角色。我也尝试使用字典,但你不能使用追加字典。如果可以调用枚举的角色,我想知道如何做到这一点,如果不是,我回到原来的问题。这是我正在使用的代码:

import random
Roles = ["One", "Two", "Three", "Four"]
SheriffList = []
Alive = []
for n in range(0, len(Roles)):
    random.shuffle(Roles)
    Role = random.choice(Roles)
    Alive.append(Roles.pop(Roles.index(Role)))
    Role2 = n,Role
    print(Role2)
    SheriffList.append(Role2)
    n += 1
    if n == len(Roles):
        random.shuffle(Alive)
        random.choice(Alive)

print(SheriffList)
   [(0, 'One'), (1, 'Four'), (2, 'Three'), (3, 'Two')]
k = int(input("Choose a number:"))

现在我想要k(我选择的数字),能够打印回来分配给它的角色例如,如果我将1分配给“k”,它将发送给我'四'。如果之前已经提出这个问题,我很抱歉,我只是无法找到我需要的东西。

4 个答案:

答案 0 :(得分:1)

解决此问题的常用方法是使用间接表:

ind = [0, 3, 2, 1]

然后要获得与k号对应的角色,您只需使用:

cur_role = Role[ind[k]]

简单,干净,无需循环......

答案 1 :(得分:0)

你实际上并不需要做太多事情,你可以保留一份清单。如果您希望'One'位于索引1,则可以附加None

>>> Roles = [None, "One", "Two", "Three", "Four"]
>>> Roles[2]
'Two'
>>> Roles[3]
'Three'

您可以在添加None之前随机播放列表:

>>> roles = ["One", "Two", "Three", "Four"]
>>> random.shuffle(roles)
>>> roles
['Three', 'Four', 'Two', 'One']
>>> roles = [None] + roles
>>> roles[3]
'Two'
>>> roles[2]
'Four'
>>> roles[1]
'Three'
>>> roles[4]
'One'

答案 2 :(得分:0)

你最好使用词典:

import random
Roles = ["One", "Two", "Three", "Four"]
SheriffList = {}
Alive = []
for n in range(0, len(Roles)):
    random.shuffle(Roles)
    Role = random.choice(Roles)
    Alive.append(Roles.pop(Roles.index(Role)))
    #Role2 = (n, Role)
    SheriffList[str(n)]=Role
    #SheriffList.append(Role2)
    n += 1
    if n == len(Roles):
        random.shuffle(Alive)
        random.choice(Alive)

print(SheriffList)
 #  [(0, 'One'), (1, 'Four'), (2, 'Three'), (3, 'Two')]
k = int(input("Choose a number:"))
print(SheriffList[str(k)])

答案 3 :(得分:0)

这将改变角色列表,并根据用户给出的0到3之间的数字为您提供其中一个。

import random

Roles = ['One','Two','Three','Four']

random.shuffle(Roles)

k = int(input('choose a number:'))

print(Roles[k])