我难以想象这一点。我正在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
答案 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("_")
。如果它不是空白列表,我建议给它一个更具描述性的名称。