Hangman 中展示错误猜测

在 Hangman 使用数组的 Python 3.2 实现中,存在一个问题:无法将玩家错误的猜测存储在 BadGuess 数组中并显示在游戏界面上。

解决方案在这里插入图片描述

  1. 首先,需要修改 BadGuess 数组的初始化。将它从 BadGuess = "_" * len(ChosenWord) * 2 更改为 BadGuess = ["_"] * len(ChosenWord) * 2。这种方式将 BadGuess 初始化为一个长度为 ChosenWord 长度两倍的列表,其中每个元素都是一个下划线字符串。这确保了 BadGuess 数组具有正确的大小来存储玩家的错误猜测。

  2. 接下来的问题是如何存储错误猜测。在玩家猜测错误时,需要将该猜测存储在 BadGuess 数组的适当位置。可以使用以下代码来实现:

# 如果猜测错误
if PlayerGuess not in ChosenWord:
    # 在 BadGuess 数组中找到正确的存储位置
    for b in range(len(BadGuess)):
        # 如果该位置为空
        if BadGuess[b] == "_":
            # 将猜测存储在该位置
            BadGuess[b] = PlayerGuess
            # 退出循环
            break
  1. 最后,需要在游戏界面上显示 BadGuess 数组中的错误猜测。可以使用以下代码来实现:
# 打印错误猜测
print("Letters you have missed:", " ".join(BadGuess))

代码例子

以下是一个完整的游戏代码,包括上述修改:

import random

# 游戏单词库
GameWords = ['COMPUTER', 'PYTHON', 'RUBY', 'DELPHI', 'LAPTOP', 'IDEALS', 'PERL']

# 程序选择一个单词
word = random.randint(0, 6)
ChosenWord = GameWords[word]

# 将 ChosenWord 转换为列表
ChosenWord = list(ChosenWord)

# 生成游戏界面
playField = ["_"] * len(ChosenWord)

# 错误猜测数组
BadGuess = ["_"] * len(ChosenWord) * 2

# 打印游戏界面
print("Bad Guesses:", " ".join(BadGuess))
print("\nHidden Word:", " ".join(playField))

# 获取单词中的字母数
WordLength = len(ChosenWord)

# 给出猜测次数,是单词长度的两倍
NumChances = WordLength * 2
print("\nNumber of Chances:", NumChances)
print("\nThis is the number of letters in the word:", WordLength, "\n")

# 猜测循环
flag = True
GoodCounter = 0
b = 0

while flag:
    # 获取玩家猜测
    PlayerGuess = input("\nGuess a letter: ").upper()

    # 玩家只能输入一个字母
    if len(PlayerGuess) != 1:
        print("Please enter a single letter.")

    # 玩家未输入字母
    elif PlayerGuess not in "ABCDEFGHIJKLMNOPQRSTUVWXYZ":
        print("Please enter a LETTER.")

    # 玩家猜测错误
    elif PlayerGuess not in ChosenWord:
        # 在 BadGuess 数组中找到正确的存储位置
        for b in range(len(BadGuess)):
            if BadGuess[b] == "_":
                BadGuess[b] = PlayerGuess
                break

        print("You have guessed wrong")
        print("Letters you have missed:", " ".join(BadGuess))

        NumChances -= 1
        print("You have", NumChances, "left!")

        if NumChances == 0:
            flag = False
            print("You have lost!")
        else:
            flag = True

    # 玩家猜测正确
    elif PlayerGuess in ChosenWord:
        # 在 playField 数组中更新正确猜测的字母
        for i in range(WordLength):
            if ChosenWord[i] == PlayerGuess:
                playField[i] = PlayerGuess

        print("\nLetters you have HIT!", " ".join(playField))
        print("You have guessed correctly")

        GoodCounter += 1

        if GoodCounter >= WordLength:
            flag = False
            print("You have won!")
        else:
            flag = True
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值