2017-11-13 6 views
2

私がしようとしているのは、リスト "ロール"の文字数としてnを使用し、番号nとその隣のロール。私が求める番号に応じて、その番号に「割り当てられた」文字を取得する方法がありますか?私は列挙型を使ってみましたが、後で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(私が選択した数が)、私は「K」に1を割り当てている場合たとえば、それに割り当てられた役割を私に戻って印刷できるようにしたいですそれは私に 'Four'を送るでしょう。申し訳ありませんが、以前に質問があった場合、私は必要なものを見つけることができませんでした。

+1

あなたが* stuff *の間で作業する場合は、 'dictionary'を使います。 –

+1

この 'for'ループの目標は何ですか? –

+0

私はforループを使用したので、最初にすべてのロールに番号を割り当て、ロールリストを空にしてロールをリストに移動します。 –

答えて

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' 
0

方が良いdictionnaryを使用します。

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)]) 
1

これを解決する一般的な方法は、間接化テーブルを使用することです。

その後、0
ind = [0, 3, 2, 1] 

kに対応する役割は、あなただけの使用を取得する:

cur_role = Role[ind[k]] 

、シンプルで清潔でループの必要はありません...

+0

エレガントです。 –

0

これは、ロールのリストをシャッフルして与えますそのうちの1つは、ユーザーが指定した0〜3の数字に基づいています。

import random 

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

random.shuffle(Roles) 

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

print(Roles[k]) 
関連する問題