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

Python实现Hangman游戏时try again重试选项失效问题求解

错误原因
  • 核心问题:end_of_game 变量在全局位置仅初始化一次,第一局游戏失败后该变量被设为 True,外层重试循环开启新一局时没有重置该值,导致内层的游戏主循环 while not end_of_game 直接跳过执行,程序进入无输出的空转状态。
  • 逻辑遗漏:重试询问的代码放在内层游戏循环的生命值判断分支内,仅在失败场景触发,没有覆盖玩家获胜后的重试场景。
  • 冗余执行:判定游戏失败后仍会执行单词拼接打印、绞刑架绘制的多余逻辑。
修复方法
  • 每启动新一局游戏时,在内层游戏循环启动前将 end_of_game 重置为 False,保证游戏主循环可以正常运行。
  • 将重试询问逻辑移到内层游戏循环结束后,无论玩家是获胜还是失败,都统一触发重开询问,避免逻辑遗漏。
  • 调整代码执行顺序,游戏状态判定为结束后不再执行多余的输出逻辑。
修复后完整代码
import random

stages = ['''
  +---+
  |   |
  O   |
 /|\  |
 / \  |
      |
=========
''', '''
  +---+
  |   |
  O   |
 /|\  |
 /    |
      |
=========
''', '''
  +---+
  |   |
  O   |
 /|\  |
      |
      |
=========
''', '''
  +---+
  |   |
  O   |
 /|   |
      |
      |
=========''', '''
  +---+
  |   |
  O   |
  |   |
      |
      |
=========
''', '''
  +---+
  |   |
  O   |
      |
      |
      |
=========
''', '''
  +---+
  |   |
      |
      |
      |
      |
=========
''']

try_again = True
word_list = ["ardvark", "baboon", "camel"]

while try_again:
    chosen_word = random.choice(word_list)
    word_length = len(chosen_word)

    display = []
    for _ in range(word_length):
        display += "_"
    lives = 6
    # 每局开始重置游戏结束标记
    end_of_game = False
    while not end_of_game:
        guess = input("Guess a letter: ").lower()
        for position in range(word_length):
            letter = chosen_word[position]
            if letter == guess:
                display[position] = letter

        if guess not in chosen_word:
            lives -= 1
            if lives == 0:
                end_of_game = True
                print("You lose.")

        print(f"{' '.join(display)}")

        if "_" not in display:
            end_of_game = True
            print("You win.")
        print(stages[lives])
    
    # 游戏结束后统一询问是否重开
    user_choice = input("Do you want to try again? (y/n):\n").lower()
    try_again = (user_choice == "y")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 13:24:21