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

Python Hangman游戏运行无报错但无法接收用户输入问题求助

问题根源

两个新手写Python最容易踩的基础语法坑,直接导致程序跑不起来:

  • 核心问题:你根本没调用写好的main()函数。Python不会自动执行你定义的函数,你只是把main()里的游戏逻辑写完了,但脚本里没有任何触发这个函数运行的代码。程序启动后只会把get_valid_word、main两个函数加载到内存,直接就运行结束了,当然不会有输出,也不会弹出输入提示等你打字。
  • 次要问题:代码缩进不统一。Python是强缩进敏感的语言,从你贴的代码看,while循环块的缩进和main函数里前面几行变量定义的缩进层级对不上,就算调用了main(),缩进不对也会出逻辑异常。
修复步骤
  1. 先统一所有代码缩进:main函数内部的所有代码,包括变量定义、while循环、循环里的打印、输入判断逻辑,全部保持同一缩进层级(推荐统一用4个空格作为一级缩进,别混着按空格和Tab)。
  2. 在整个脚本的最末尾,加上程序入口代码,让脚本启动后自动运行游戏逻辑:
if __name__ == "__main__":
    main()
  1. 你现在的代码缺了胜利提示,while循环跑完(也就是所有字母都猜对)之后玩家看不到结果,可以在while循环结束后补一行:
print(f"猜对了!正确单词就是{word},你赢了!")
修复后可直接运行的完整代码
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.upper()

def main():
    word = get_valid_word(words)
    word_letters = set(word)  # 存单词里还没被猜对的字母
    alphabet = set(string.ascii_uppercase)
    used_letters = set()  # 存用户已经猜过的字母

    # 循环猜词,直到所有字母都被猜中
    while len(word_letters) > 0:
        # 展示已猜过的字母
        print('你已经猜过这些字母: ', ' '.join(used_letters))

        # 展示当前猜词进度(例:W _ R D)
        word_list = [letter if letter 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('输入无效,请输入英文字母')
    
    print(f"恭喜通关!正确单词就是{word}")

# 启动游戏
if __name__ == "__main__":
    main()

注意:要保证存单词列表的words.py文件和游戏脚本在同一个文件夹下,且words.py里确实定义了名为words的列表变量,否则会报导入错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 05:42:31