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

Python版Hangman游戏:错误猜测时逐步显示绞刑架的实现问题

解决Hangman游戏绞刑架逐步显示问题

问题根源

你的代码有三个核心问题导致绞刑架无法逐步更新:

  • displayScaffold函数参数错误:应该传入当前错误次数wrong,而非最大错误次数MAX_WRONG
  • 绞刑架阶段顺序颠倒:错误次数为0时应显示空绞刑架,但你定义的stages数组第一个元素是完整绞刑架,最后一个才是空的
  • 未在每次错误后重新渲染绞刑架,且初始显示时误用了MAX_WRONG作为参数

修正后的完整代码

import random

def displayScaffold(wrong_guesses):
    """根据错误猜测次数返回对应阶段的绞刑架图形"""
    # 顺序调整:索引0对应0次错误(空绞刑架),索引6对应6次错误(完整绞刑架)
    stages = (
        """
                    ----------
                    |/       |
                    |        
                    |        
                    |        
                    |
                    ---
               """,
        """
                    ----------
                    |/       |
                    |        o
                    |        
                    |        
                    |
                    ---
               """,
        """
                    ----------
                    |/       |
                    |        o
                    |        |
                    |        
                    |
                    ---
               """,
        """
                    ----------
                    |/       |
                    |        o
                    |       /|
                    |        
                    |
                    ---
               """,
        """
                    ----------
                    |/       |
                    |        o
                    |       /|\\
                    |        
                    |
                    ---
               """,
        """
                    ----------
                    |/       |
                    |        o
                    |       /|\\
                    |       / 
                    |
                    ---
               """,
        """
                    ----------
                    |/       |
                    |        o
                    |       /|\\
                    |       / \\
                    |
                    ---
               """
    )
    return stages[wrong_guesses]

WORDS = (
    "PYTHON", "ESTIMATE", "DIFFICULT", "ANSWER", "XYLOPHONE",
    "UNNECESSARY", "ADEQUATE", "FEASIBLE", "CHARACTER",
    "CONGRATULATIONS", "SEQUENCE", "POSITION", "PROGRAM"
)
MAX_WRONG = 6
word = random.choice(WORDS)
so_far = "-" * len(word)
wrong = 0
used = []

print("\nWelcome to the Hangman Game!")
print(f"\nYou have {MAX_WRONG} wrong attempts to guess the word.")
# 初始显示0次错误对应的空绞刑架
print(displayScaffold(wrong))

while wrong < MAX_WRONG and so_far != word:
    print(f"\n{so_far}\n")
    guess = input("Enter a letter: ").upper()
    
    while guess in used:
        print(f"\nYou have already guessed this letter: {guess}\a")
        guess = input("Enter a letter: ").upper()
    
    used.append(guess)
    
    if guess in word:
        print(f"\nYes, {guess} is in the word.")
        new = ""
        for i in range(len(word)):
            if guess == word[i]:
                new += guess
            else:
                new += so_far[i]
        so_far = new
        # 猜对后也可以保留显示当前绞刑架(可选)
        print(displayScaffold(wrong))
    else:
        print(f"\nSorry, {guess} isn't in the word.\a")
        wrong += 1
        left = MAX_WRONG - wrong
        print(f"\nYou have {left} guesses left.")
        # 错误后立即更新显示绞刑架
        print(displayScaffold(wrong))

if wrong == MAX_WRONG:
    print("\nYou've been hanged!\a")
else:
    print("\nYou guessed it!\a")
print(f"\nThe word was {word}")

input("\nPress Enter to exit")

关键修改说明

  1. 函数参数与docstring优化:
    • 将函数参数改为wrong_guesses(当前错误次数),并添加规范的docstring说明功能
  2. 调整stages顺序:
    • 让索引0对应0次错误的空绞刑架,索引6对应6次错误的完整绞刑架,保证错误次数与图形阶段一一对应
  3. 更新渲染时机:
    • 初始显示时传入wrong=0,显示空绞刑架
    • 每次错误后调用displayScaffold(wrong),实时更新绞刑架图形
    • 可选:猜对后也保留绞刑架显示,让界面更连贯
  4. 小细节优化:
    • 用f-string替代旧式字符串拼接,代码更简洁
    • 修正了原代码中斜杠的显示错误(/|/改为/|\,符合标准绞刑架图形)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 18:55:13