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

如何让每个if语句输出不同内容?吊死鬼游戏打印问题求助

吊死鬼(Hangman)游戏问题修复方案

核心问题分析

  1. 你当前代码里嵌套的if guess not in list判断条件重复,导致每次猜错会一次性执行所有打印语句,直接输出完整的吊死鬼图形。
  2. 缺少错误次数计数器,无法根据猜错的次数逐步显示身体部位。
  3. 原代码存在小bug:单词列表里hamster和fish之间缺少逗号,会被拼接成hamsterfish,需要修正。
  4. 猜对字符时的输出逻辑错误,应该显示猜对的字符而非固定文字"correct"。

修复后的代码

import random

# 修正列表的逗号问题
word_list = ['dog', 'cat', 'snake', 'hamster', 'fish']
secret_word = random.choice(word_list)
guesses = ''
# 设定最大错误次数,对应吊死鬼的身体部位阶段
max_wrong_guesses = 6
wrong_guesses = 0

# 定义吊死鬼的各个阶段,索引对应错误次数
hangman_stages = [
    # 0次错误:只有架子
    """
     _______
    |       |
    |       
    |       
     _______
    """,
    # 1次错误:头部
    """
     _______
    |       |
    |       O
    |       
     _______
    """,
    # 2次错误:头部+身体
    """
     _______
    |       |
    |       O
    |       |
     _______
    """,
    # 3次错误:头部+身体+左臂
    """
     _______
    |       |
    |       O
    |      /|
     _______
    """,
    # 4次错误:头部+身体+双臂
    """
     _______
    |       |
    |       O
    |      /|\\
     _______
    """,
    # 5次错误:头部+身体+双臂+左腿
    """
     _______
    |       |
    |       O
    |      /|\\
    |      /
     _______
    """,
    # 6次错误:完整吊死鬼(游戏结束)
    """
     _______
    |       |
    |       O
    |      /|\\
    |      / \\
     _______
    """
]

while wrong_guesses < max_wrong_guesses:
    failed = 0
    # 打印当前的单词状态
    for char in secret_word:
        if char in guesses:
            print(char, end=' ')
        else:
            print('_', end=' ')
            failed += 1
    
    if failed == 0:
        print("\n你赢了!")
        print(f"单词是:{secret_word}")
        break
    
    # 打印当前错误次数对应的吊死鬼图形
    print(hangman_stages[wrong_guesses])
    
    # 获取用户输入并处理
    guess = input("猜一个字符:").lower()
    # 确保输入是单个字母
    if len(guess) != 1 or not guess.isalpha():
        print("请输入单个英文字母!")
        continue
    # 如果已经猜过这个字符
    if guess in guesses:
        print("你已经猜过这个字符了!")
        continue
    
    guesses += guess
    
    # 判断是否猜错
    if guess not in secret_word:
        wrong_guesses += 1
        print(f"猜错了!你还有 {max_wrong_guesses - wrong_guesses} 次机会。")

# 当错误次数用完时,游戏结束
if wrong_guesses == max_wrong_guesses:
    print(hangman_stages[-1])
    print(f"你输了!正确单词是:{secret_word}")

关键改进点说明

  • 错误次数计数器:用wrong_guesses变量记录每次猜错的次数,每次猜错就递增1。
  • 分阶段图形:把吊死鬼的每个阶段存进hangman_stages列表,根据wrong_guesses的值打印对应阶段的图形,实现逐步显示身体部位。
  • 输入合法性校验:限制用户只能输入单个英文字母,避免无效输入干扰游戏逻辑。
  • 修正字符显示:猜对字符时直接显示该字符,而非输出"correct",符合游戏常规逻辑。
  • 修复列表bug:补上单词列表中缺失的逗号,避免生成错误的单词。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 05:10:37