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

Hangman游戏程序问题:循环中全局变量误用致输出异常

解决Hangman游戏中重复输出历史猜测结果的问题

你的核心问题是误用了全局变量word:这个全局变量会在每次函数调用时保留之前的拼接结果,导致每次正确猜测后都把历史输出也追加进去。要解决这个问题,我们需要去掉全局变量,让函数每次都从头构建当前的猜测结果,而不是累加历史值。

问题根源分析

你当前的代码里,全局变量word在第一次调用函数时被赋值,之后每次调用getGuessedWord,都会在这个已有的word字符串后面继续拼接新的内容,自然就会把之前所有的结果都重复输出。

修改后的代码方案

我们把函数改成纯函数(不依赖全局状态,只靠传入的参数生成结果),每次调用时重新构建当前的猜测字符串:

def getGuessedWord(secretWord, lettersGuessed):
    # 每次调用函数时,初始化一个空字符串,从头构建当前结果
    current_word = ''
    for letter in secretWord:
        if letter not in lettersGuessed:
            current_word += ' _'
        else:
            current_word += ' ' + letter
    # 返回构建好的当前结果,而不是直接打印(更灵活)
    return current_word

# 在你的while循环里这样使用:
# 假设secretWord是目标单词,lettersGuessed是已猜字母的列表
while True:
    # 获取用户输入的逻辑...
    guessed_word = getGuessedWord(secretWord, lettersGuessed)
    print(guessed_word.strip())  # strip()去掉开头的空格,输出更美观

修改后的效果

按照你的例子,现在的输出会变成:

# 第一次猜'a'时:
a _ _ _ _
# 第二次猜'l'时:
a _ _ l _
# 第三次猜'e'时:
a _ _ l e

额外建议

尽量避免使用全局变量来存储临时状态,像这样的场景,函数应该只负责根据输入的参数生成对应的输出,状态(比如lettersGuessed)可以在循环里维护,然后传递给函数。这种写法更清晰,也不容易出现类似的状态混乱问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:47:19