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

如何构建Hangman游戏循环:校验输入并直至猜中所有字母

解决Hangman游戏的循环猜字母问题

你的代码核心问题是仅执行了一次字母输入与匹配逻辑,未实现让用户持续猜字母直到全中的循环,同时输入校验的while True仅执行一次就跳出,需要将其嵌套到持续猜字母的外层循环中。

以下是修改后的完整代码,保留了你要求的输入校验逻辑,同时实现了持续猜字母直到所有字母被猜中的功能:

print("Let's Play Hangman game!")

# 获取合法的目标单词
while True:
    vocab = input("Please enter an English word: ")
    if vocab.isalpha():
        uppercase_vocab = vocab.upper()
        break
    else:
        print(f"Your input '{vocab}' is not a valid English word.")

# 初始化显示用的下划线列表
display = ["_"] * len(uppercase_vocab)
# 记录已猜过的字母,避免重复输入
guessed_letters = set()

# 外层循环:直到所有字母被猜中(display中无下划线)
while "_" in display:
    # 内层循环:校验输入必须是单个字母
    while True:
        word = input("\nPlease enter an alphabet: ")
        if len(word) == 1 and word.isalpha():
            uppercase_word = word.upper()
            # 检查是否已经猜过这个字母
            if uppercase_word in guessed_letters:
                print(f"You already guessed '{uppercase_word}'! Try another one.")
            else:
                guessed_letters.add(uppercase_word)
                break
        else:
            print(f"Your input '{word}' is not a valid single alphabet.")
    
    # 匹配字母并更新display
    for i in range(len(uppercase_vocab)):
        letter = uppercase_vocab[i]
        if letter == uppercase_word:
            display[i] = letter
    
    # 输出当前猜中状态
    current_status = "".join(display)
    print(f"Current progress: {current_status}")

# 全部猜中后的提示
print("\nCongratulations! You guessed all letters correctly!")

关键修改点:

  • 新增外层循环while "_" in display:只要显示列表里还有下划线,就持续让用户猜字母。
  • 将输入校验的while True嵌套到外层循环内:每次猜字母前都执行输入合法性检查,满足要求才跳出内层循环处理字母匹配。
  • 新增guessed_letters集合:记录用户已猜过的字母,避免重复输入同一个字母,优化游戏体验。
  • 每次猜完字母后输出当前猜中进度,让用户清晰掌握游戏状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 14:52:17