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

Python Hangman猜单词游戏下划线不显示问题求助

Hangman猜词游戏下划线不显示问题修复

问题根源

你的代码存在几个关键逻辑错误,直接导致下划线无法正常显示:

  • get_valid_word函数错误返回了整个单词列表words,而非随机选中的单个单词word
  • word_letters = set(words)错误地将整个单词列表转为集合,应该基于选中的单个单词word生成
  • 未调用hangman()函数启动游戏,反而执行了无关的user_input代码
  • 条件判断缩进错误,导致输入逻辑分支混乱

修正后的完整代码

import random
from words import words
import string


def get_valid_word(words):
    word = random.choice(words)
    while '-' in word or ' ' in word:
        word = random.choice(words)
    # 返回选中的单个单词,而非整个列表
    return word


def hangman():
    word = get_valid_word(words)
    # 基于选中单词的字母生成集合,统一转为大写避免大小写判断问题
    word_letters = set(word.upper())
    alphabet = set(string.ascii_uppercase)
    used_letters = set()

    while len(word_letters) > 0:
        print('已使用字母: ', ' '.join(used_letters))
        
        # 生成显示用的单词结构,匹配大写判断逻辑
        word_list = [letter if letter.upper() in used_letters else '-' for letter in word]
        print('当前单词: ', ' '.join(word_list))
    
        user_letter = input('猜一个字母: ').upper()
        if user_letter in alphabet - used_letters:
            used_letters.add(user_letter)
            # 命中单词字母时从待猜集合移除
            if user_letter in word_letters:
                word_letters.remove(user_letter)
        elif user_letter in used_letters:
            print('这个字母已经用过了!换一个试试。')
        else: 
            print('无效字符,请输入英文字母。')

# 调用游戏函数启动程序
hangman()

关键修正点说明

  1. 修正get_valid_word的返回值,确保返回随机选中的单个有效单词
  2. 调整word_letters的生成逻辑,基于选中单词而非整个单词列表
  3. 移除无关的user_input代码,添加hangman()调用启动游戏
  4. 重构条件判断结构,修复输入逻辑的分支错误
  5. 统一字母大小写判断规则,避免大小写不匹配导致的判断失效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 01:54:57