2014-01-07 35 views
1

下面的代碼是我編碼的一個口袋妖怪仿製品,而列表中的pokemon是一個類的所有實例。該腳本不引發錯誤,但無論怎樣我打字,它進入else語句「這不是一個寵物小精靈」,並呼籲player1_select() ......對於i,j in listname.iteritems():不起作用

pokemon_dict = {"joe":joe,"alex":alex,"ginger beard man":ginger_beard_man,"mark":mark} 
pokemon_list = ["joe","alex","mark","ginger beard man"] 
def player1_select(): 
    print pokemon_list 
    response = raw_input("trainer 2 wants to battle! which pokemon do you choose!?") 
    for i,j in pokemon_dict.iteritems(): 
     if response == i: 
      print "player1 selected " + i + "!" 
      p1 = j 
      player2_select(p1) 
     else: 
      print "That's not a pokemon! yet..." 
      player1_select() 

回答

2

您正在測試的每一個元素的字典,它意味着幾乎不爲零或者一個不匹配。對於所有那些不匹配else的分支都會執行。

但是,你有一本字典;不循環,只是仰望入口直接映射:

response = raw_input("trainer 2 wants to battle! which pokemon do you choose!?") 
if response in pokemon_dict: 
    print "player1 selected " + response + "!" 
    p1 = pokemon_dict[response] 
    player2_select(p1) 
else: 
    print "That's not a pokemon! yet..." 
    player1_select() 

response in pokemon_dict是真,如果有匹配的密鑰。

1

您正按照任意順序遍歷字典中的每個鍵/值對。如果您檢查的第一個不是用戶輸入的內容,將執行else塊。你可能想要這樣的東西:

if response in pokemon_dict: # Checks if `response` is a key in the dictionary 
    print "player1 selected " + i + "!" 
    p1 = pokemon_dict[response] 
    player2_select(p1) 
else: 
    print "That's not a pokemon! yet..." 
    player1_select() 
相關問題