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

Hangman游戏技术问题:非匹配输入重置循环及重复字母显示修复

Hangman猜词游戏问题修复

问题1:重复字母仅显示一次的修复

原代码用字符串修改单个位置,还混淆了输入字母和更新后单词的变量,导致"apple"里的两个p只能显示一个。修复后改用列表存储隐藏单词,遍历所有位置一次性替换所有匹配字母。

问题2:错误输入重置循环的修复

原代码每次遍历字符不匹配就加错误次数,一次错误直接耗尽机会,且没回到输入步骤。修复后用标记判断是否猜对,猜错只加一次次数,然后直接回到循环开头重新输入。

修复后的完整代码

def guesses():
    word_chosen = "apple"
    guess = 0
    # 用列表存隐藏单词,方便修改多个位置
    hangman_word = ["_"] * len(word_chosen)
    while guess < 5:
        # 先展示当前猜词进度
        print("当前单词:", "".join(hangman_word))
        guess_player = input("请输入一个字母: ").lower()
        
        correct_guess = False
        # 遍历所有字符位置,替换所有匹配的字母
        for i in range(len(word_chosen)):
            if guess_player == word_chosen[i]:
                hangman_word[i] = word_chosen[i]
                correct_guess = True
        
        if correct_guess:
            # 检查是否已经猜完所有字母
            if "_" not in hangman_word:
                print(f"恭喜你猜对了!单词是 {word_chosen}")
                return
            print("猜对了,继续!")
        else:
            guess += 1
            print(f"猜错了!还剩 {5 - guess} 次机会")
    
    # 用完所有机会,游戏结束
    print(f"游戏结束!正确单词是 {word_chosen}")

关键修复点

  • 用列表替代字符串存储隐藏单词:字符串不可变,列表可以直接修改任意位置,解决重复字母无法全部显示的问题。
  • 新增correct_guess标记:遍历完所有字符后统一判断是否猜对,避免一次错误输入多次增加计数,同时猜错后直接回到循环开头,实现“重置循环”的需求。
  • 每次输入前展示当前进度:让玩家清晰看到已猜对的字母位置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 11:48:29