-1

ユーザーに1、2、3、4、5、6を入力させようとしています。次に、その整数を辞書の文字名に合わせます。

characters = {
'Stark': '1',
'Greyjoy': '2',
'California': '3',
'Whitewalkers': '4',
'Knights Watch': '5',
'Dalthraki': '6'
 }   

print 'Type 1 for Stark'
print 'Type 2 for Greyjoy'
print 'Type 3 for Lannister'
print 'Type 4 for Whitewalkers'
print 'Type 5 for Knights Watch'
print 'Type 6 for Dalthraki' 
choice = raw_input("> ")
if choice in characters:
    print 'You\'ve selected', choice 
else:
    splash()

ユーザーに1を入力してもらい、スクリプトに「スタークを選択しました」と出力させたいのですが、よろしくお願いします。

4

3 に答える 3

3

あなたはdict後ろ向きです:

characters = {
'1': 'Stark',
'2': 'Greyjoy',
'3': 'California',
'4': 'Whitewalkers',
'5': 'Knights Watch',
'6': 'Dalthraki',
}   

print 'Type 1 for Stark'
print 'Type 2 for Greyjoy'
print 'Type 3 for Lannister'
print 'Type 4 for Whitewalkers'
print 'Type 5 for Knights Watch'
print 'Type 6 for Dalthraki' 
choice = raw_input("> ")
if choice in characters:
    print 'You\'ve selected', characters[choice] 
else:
    pass
于 2012-08-14T19:04:29.563 に答える
1

dictを次のように変更します。

characters = {
'1':'Stark',
 '2':'Greyjoy',
'3':'California',
'4':'Whitewalkers',
'5':'Knights Watch',
'6':'Dalthraki'
 }  

と使用:

if choice in characters:
    print 'You\'ve selected {0}'.format(characters[choice])
else:
    splash()
于 2012-08-14T19:03:01.407 に答える
0

そのように辞書を実際に使用することはできません。キーと値のペアを逆にしてから、characters[choice]を使用して文字の名前を取得できます。辞書をそのまま保持したい場合は、アイテムを反復処理するのが最善の策です。

characterName = None
names = characters.items()
while characterName is None and names:
    if names[0][1] == choice:
        characterName = names[0][0]
    else:
        names = names[1:]

これを実行すると、characterNameに文字名が含まれるか、ユーザーが無効なエントリを作成した場合はNoneになります。

于 2012-08-14T19:11:07.810 に答える