2015-11-02 34 views
0

我注意到這是一個受歡迎的TypeError,但我找不到解決方案。看看我的代碼,說什麼是錯的,請:Dict裏面的列表和TypeError:列表索引必須是整數,而不是字典

import random 
players_list = [] 

def add_player(): 
    possible_flags = {'is_computer', 'is_human'} 
    decision = -1 
    while decision != '0': 
     player_name = input('Give a name: ') 

     while player_flag not in possible_flags 
      player_flag = input("Type 'is_computer' or 'is_human': ") #is_computer or is_human 

     players_list.append({'player_name': player_name, 'player_flag': player_flag, 'player_decision': None}) 

     decision = input('Do you want add a new player [1]? To leave type [1] ') 


def play(): 
    options = {1: 'rock', 2: 'paper', 3: 'scissors', 4: 'lizard', 5: 'Spock'} 
    for i in players_list: 
     if('is_computer' in players_list[i]): 
      player_decision = random.choice(options) 
     elif('is_player' in players_list[i]): 
      player_decision = input() 

     player_list[i]['player_decision'] = options[player_decision] 


add_player() 
play() 

的問題是存在的:

if('is_computer' in players_list[i]): 

我也試過:

if('is_computer' in players_list[i]['player_flag']): 

但是,這也不起作用。 我只是不明白它。把詞典放在名單中是否犯了錯誤?我會很感激任何有關它的文章的鏈接。

非常感謝

+0

'我在players_list中:\ n ... players_list [i]':Python不是javascript。 – Evert

回答

2
for i in players_list 

i不是指數,而是元素本身。您可能需要將以下代碼片段改寫爲:

for player in player_list: 
    if player['player_flag'] == 'is_computer': 
     ... 
相關問題