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

Python Hangman游戏:正确猜测时额外打印下划线问题求助

解决Hangman猜单词游戏中额外下划线的问题

问题现象

用户实现的Hangman游戏在猜中字母时,输出会出现多余的下划线,示例终端输出如下:

letter> b

b___

Letter> r

b__r____

Letter> u

b___r___u___

Letter> h

b____r____u____h

问题根源

核心问题出在字符输出的逻辑上:

  • 原代码的checker函数以及错误分支里的打印逻辑,对单词的每个字符(外层循环),都遍历一遍已猜字母列表(内层循环),每一次内层循环都会打印一个字符或下划线,导致每个单词字符对应len(已猜字母列表)个输出,而非每个单词字符只输出一次。
  • 比如单词长度为4,已猜字母有2个时,会输出4×2=8个字符,这就是额外下划线的来源。

修复方案

重构字符输出逻辑,确保每个单词字符只判断一次、输出一次,同时优化代码的可读性和规范性:

word = input("Input your word> ").strip().lower()

guessed_letters = []  # 避免使用Python内置类型名`list`作为变量名
counter = 6

def counter1():
    global counter 
    counter -= 1  
    return counter

def display_current_state():  
    # 重命名函数为更清晰的语义,负责展示当前猜词状态
    for char in word:
        print(char if char in guessed_letters else "_", end='')
    print()  # 输出完状态后换行,避免格式混乱

def program():
    ask1 = input("Letter> ").lower().strip()  # 提前统一处理输入,减少重复代码
    print()
    if ask1 in guessed_letters:
        print("\033[31mYou already picked this!\033[0m")
        print()
        display_current_state()
        print()
        program()
    else: 
        if ask1 in word:
            guessed_letters.append(ask1)
            display_current_state()
            print()
            program()
        else: 
            print("\033[31mWRONG!!\033[0m")
            print()
            display_current_state()
            print()
            if counter == 1:
                print(f"You lost!, The answer was >> {word}")
                return  # 用return替代exit(),退出更优雅
            else:
                print(counter1(), "Attempts left")
                print()
                program()
        
program()

关键修改说明

  • 变量名优化:将list改为guessed_letters,避免覆盖Python内置的list类型
  • 输出逻辑重构:display_current_state函数遍历单词的每个字符,仅判断一次该字符是否在已猜列表中,每个字符只输出一次,彻底解决重复下划线问题
  • 输入处理优化:提前对用户输入执行lower().strip(),减少重复操作
  • 退出方式优化:用return替代exit(),让程序退出流程更可控
  • 冗余代码移除:删除不必要的word.find()调用,直接通过成员判断即可完成逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 09:16:15