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

Hangman游戏大小写匹配错误及单词列表转小写技术求助

解决Hangman游戏大小写不匹配的判定问题

要实现忽略大小写的字母判定,只需统一目标单词和用户输入的大小写基准,同时优化输入验证逻辑,以下是具体修改步骤:

1. 统一目标单词的大小写

在main()函数中,将随机选中的单词转换为全小写用于匹配判断,同时保留原单词副本用于游戏结束时展示:

def main():
    global count
    global display
    global word
    global original_word  # 新增全局变量保存原单词
    global already_guessed
    global length
    global play_game
    selected_word = random.choice(word_list)
    word = selected_word.lower()  # 转小写作为匹配基准
    original_word = selected_word  # 保留原单词用于最终展示
    length = len(word)
    count = 0
    display = '_' * length
    already_guessed = []
    play_game = ""

2. 统一用户输入的大小写

在hangman()函数中,将用户输入的猜测字母转换为全小写,确保和目标单词的基准一致:

guess = input("This is the Hangman Word: " + display + " Enter your guess: \n")
guess = guess.strip().lower()  # 统一转为小写

3. 修正输入验证逻辑

原代码中guess <= "9"的判断逻辑有误,替换为更准确的数字检测:

if len(guess) == 0 or len(guess) >= 2 or guess.isdigit():
    print("Invalid Input, Try a letter\n")
    hangman()

4. 优化多字母匹配与显示

原代码仅替换第一个匹配的字母,新增循环处理所有相同字母,同时显示原单词的大小写:

elif guess in word:
    already_guessed.extend([guess])
    # 循环替换所有匹配的字母
    while guess in word:
        index = word.find(guess)
        word = word[:index] + "_" + word[index + 1:]
        display = display[:index] + original_word[index] + display[index + 1:]  # 显示原单词的大小写
    print(display + "\n")

5. 修正游戏结束时的单词展示

原代码展示正确单词的逻辑错误,改为使用保存的原单词:

elif count == 9:
    time.sleep(1)
    print("   _____ \n"
          "  |     | \n"
          "  |     |\n"
          "  |     | \n"
          "  |     O \n"
          "  |    /|\\ \n"
          "  |    / \\ \n"
          "__|__\n")
    print("Wrong guess. You are hanged!!!\n")
    print("The word was:", original_word)  # 展示原单词
    play_loop()

修改后的完整代码

import random
import time
from words import word_list

# Initial Steps to invite in the game:
print("\nWelcome to Hangman!\n")
name = input("Enter Your name: ")
print("Hello " + name + "! Good Luck!")
time.sleep(2)
print("The Game is About to Start!\n Let's Play Hangman!")
time.sleep(3)

# The parameters we require to execute the game:
def main():
    global count
    global display
    global word
    global original_word
    global already_guessed
    global length
    global play_game
    selected_word = random.choice(word_list)
    word = selected_word.lower()
    original_word = selected_word
    length = len(word)
    count = 0
    display = '_' * length
    already_guessed = []
    play_game = ""

# A loop to re-execute the game when the first round ends:
def play_loop():
    global play_game
    play_game = input("Do You want to play again? y = yes, n = no \n")
    while play_game not in ["y", "n","Y","N"]:
        play_game = input("Do You want to play again? y = yes, n = no \n")
    if play_game == "y":
        main()
    elif play_game == "n":
        print("Thanks For Playing! We expect you back again!")
        exit()

# Initializing all the conditions required for the game:
def hangman():
    global count
    global display
    global word
    global original_word
    global already_guessed
    global play_game
    limit = 9
    guess = input("This is the Hangman Word: " + display + " Enter your guess: \n")
    guess = guess.strip().lower()
    
    if len(guess) == 0 or len(guess) >= 2 or guess.isdigit():
        print("Invalid Input, Try a letter\n")
        hangman()

    elif guess in word:
        already_guessed.extend([guess])
        # 处理单词中多个相同字母的情况
        while guess in word:
            index = word.find(guess)
            word = word[:index] + "_" + word[index + 1:]
            display = display[:index] + original_word[index] + display[index + 1:]
        print(display + "\n")

    elif guess in already_guessed:
        print("Try another letter.\n")

    else:
        count += 1

        if count == 1:
            time.sleep(1)
            print("   _____ \n"
                  "  |      \n"
                  "  |      \n"
                  "  |      \n"
                  "  |      \n"
                  "  |      \n"
                  "  |      \n"
                  "__|__\n")
            print("Wrong guess. " + str(limit - count) + " guesses remaining\n")

        elif count == 2:
            time.sleep(1)
            print("   _____ \n"
                  "  |     | \n"
                  "  |     |\n"
                  "  |      \n"
                  "  |      \n"
                  "  |      \n"
                  "  |      \n"
                  "__|__\n")
            print("Wrong guess. " + str(limit - count) + " guesses remaining\n")

        elif count == 3:
           time.sleep(1)
           print("   _____ \n"
                 "  |     | \n"
                 "  |     |\n"
                 "  |     | \n"
                 "  |      \n"
                 "  |      \n"
                 "  |      \n"
                 "__|__\n")
           print("Wrong guess. " + str(limit - count) + " guesses remaining\n")

        elif count == 4:
            time.sleep(1)
            print("   _____ \n"
                  "  |     | \n"
                  "  |     |\n"
                  "  |     | \n"
                  "  |     O \n"
                  "  |      \n"
                  "  |      \n"
                  "__|__\n")
            print("Wrong guess. " + str(limit - count) + " last guess remaining\n")

        elif count == 5:
            time.sleep(1)
            print("   _____ \n"
                  "  |     | \n"
                  "  |     |\n"
                  "  |     | \n"
                  "  |     O \n"
                  "  |     | \n"
                  "  |      \n"
                  "__|__\n")
            print("Wrong guess. " + str(limit - count) + " last guess remaining\n")

        elif count == 6:
            time.sleep(1)
            print("   _____ \n"
                  "  |     | \n"
                  "  |     |\n"
                  "  |     | \n"
                  "  |     O \n"
                  "  |    /| \n"
                  "  |      \n"
                  "__|__\n")
            print("Wrong guess. " + str(limit - count) + " last guess remaining\n")

        elif count == 7:
            time.sleep(1)
            print("   _____ \n"
                  "  |     | \n"
                  "  |     |\n"
                  "  |     | \n"
                  "  |     O \n"
                  "  |    /|\\ \n"
                  "  |      \n"
                  "__|__\n")
            print("Wrong guess. " + str(limit - count) + " last guess remaining\n")

        elif count == 8:
            time.sleep(1)
            print("   _____ \n"
                  "  |     | \n"
                  "  |     |\n"
                  "  |     | \n"
                  "  |     O \n"
                  "  |    /|\\ \n"
                  "  |    /  \n"
                  "__|__\n")
            print("Wrong guess. " + str(limit - count) + " last guess remaining\n")

        elif count == 9:
            time.sleep(1)
            print("   _____ \n"
                  "  |     | \n"
                  "  |     |\n"
                  "  |     | \n"
                  "  |     O \n"
                  "  |    /|\\ \n"
                  "  |    / \\ \n"
                  "__|__\n")
            print("Wrong guess. You are hanged!!!\n")
            print("The word was:", original_word)
            play_loop()

    if word == '_' * length:
        print("Congrats! You have guessed the word correctly!")
        play_loop()

    elif count != limit:
        hangman()

main()
hangman()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 07:35:36