2015-11-02 33 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': 
     ... 
相关问题