You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

猜单词(Hangman)游戏代码问题:如何替换列表中所有匹配项

解决Hangman游戏中多匹配字母替换问题

你的代码核心问题在于每次调用self.word.find(guess)只会返回第一个匹配字符的索引,循环中反复修改的都是同一个位置,导致像apple里的第二个p无法被替换。同时self.num_letters -= 1的逻辑也有问题,若字母重复出现,剩余字母数会计算错误。

修改后的代码

if guess in self.word:
    print(f"Good guess! {guess} is in the word.")
    guessed = True
    # 统计当前字母出现的总次数,用于更新剩余待猜字母数
    match_count = self.word.count(guess)
    # 遍历每个索引和对应字符,替换所有匹配项
    for idx, char in enumerate(self.word):
        if char == guess:
            self.word_guessed[idx] = guess
    self.num_letters -= match_count
    print(f"Your progress so far: {self.word_guessed}.")

else:
    self.num_lives -= 1
    print(f"Sorry. {guess} is not in the word. Try again.")
    print(f"You have {self.num_lives} lives left.")
    print(f"Your progress so far: {self.word_guessed}.")

关键优化点

  • 使用enumerate()同时获取字符的索引和内容,确保每个匹配的位置都被精准替换
  • 用str.count()获取字母在单词中的总出现次数,准确更新剩余需要猜测的字母数量

内容的提问来源于stack exchange,提问作者Jen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 22:32:37