我要做的是使用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”,它将发送给我'四'。如果之前已经提出这个问题,我很抱歉,我只是无法找到我需要的东西。
答案 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])