Python Hangman游戏 - 如何在列表中替换相同值的多个实例?

时间:2016-04-02 18:36:23

标签: python-3.x

我难以想象这一点。我正在Python 3中构建一个非常典型的刽子手游戏,除了当玩家在随机生成的单词中输入一个字母时,它才会游泳,只显示该单词中该字母的第一个实例。有人能否解释我做错了什么?这是我的功能:

def reveal_letter(player_guess, mystery_word, word_update, blank_list):
mys_list = list(mystery_word)
    for item in mys_list:
        if str(player_guess) == item:
            blank_list[mys_list.index(str(player_guess))] = str(player_guess)
    return blank_list

1 个答案:

答案 0 :(得分:0)

您正在使用.index(),它始终返回找到的第一个匹配项。您可以在此处使用enumerate()

def reveal_letter(player_guess, mystery_word, word_update, blank_list):
    for index, item in enumerate(mystery_word):
        if player_guess == item:
            blank_list[i] = player_guess

    return blank_list

请注意,[][0] = None会引发IndexError。如果blank_list确实是空白列表,则应使用blank_list.append(player_guess)代替分配,并在其后添加else: blank_list.append("_")。如果它不是空白列表,我建议给它一个更具描述性的名称。