Python-猜词游戏在带有重复字符的单词上失败

我是编程新手,但我一直在教自己 Python on and off 几个月。我写了一个猜词游戏程序。该程序执行以下操作:

我是编程新手,但我一直在教自己 Python on and off 几个月。我写了一个猜词游戏程序。该程序执行以下操作:

它从预定义的一组单词中选择一个单词,我称之为dictionary

它解释了游戏规则。

它告诉用户单词中有多少个字母,并用下划线表示每个字母。

它要求用户猜测一个字母。

它告诉用户猜测是正确的,然后它重新打印下划线,但用正确的猜测替换相关的下划线。我的意思是,如果单词是 'PYTHON' 并且用户猜测 'H',它将打印["_", "_", "_", "H", "_", "_"]

另一方面,如果猜测不在单词中,它会告诉用户,然后重新打印下划线。我的意思是,如果用户的下一个猜测是“Z”,它会说“这个字母不在单词中”,然后再次重新打印["_", "_", "_", "H", "_", "_"],这样用户就可以跟踪他 / 她在哪里。

最后,一旦所有的字母都被猜出来,它祝贺用户并结束游戏。

是代码:

import random
dictionary = ("CROWS", "GOAT", "MONKEY", "COW", "HORSE", "SNAKE")
answer = random.choice(dictionary)
answer_length = len(answer)
victory = True
print("""
    I have chosen a word.  Your job is to guess it. I will help you
    keep track.
    """)
print("The word I have chosen is {} letters long.\n".format(answer_length))
underscores = []
for character in answer:
    underscores.append("_")
print(underscores)
while victory:
    guess = input("\nPlease guess a letter: ").strip().capitalize()
    def pos(guess):
        position = 0
        for letter in answer:
            if letter != guess:
                position += 1
            else:
                print("Correct!")
                break
        return position
    def update_board(x):
        global underscores
        if guess in answer:
            underscores[x] = guess
        else:
            print("This letter is not in the word")
        return underscores
    def winner():
        global underscores
        global victory
        if "_" not in underscores:
            print("YOU HE WON!")
            victory = False
    x = pos(guess)
    print(update_board(x))
    winner()

现在,我遇到的问题是:该程序工作正常,提供计算机从字典中选择的单词中没有任何重复的字母。您会注意到字典中的单词都由唯一字符组成。但是,如果字典中包含单词“CHICKEN”,则程序可能会遇到问题。

想象一下,计算机选择了“CHICKEN”,然后您猜到了字母“C”。该程序将返回:

Correct!
["C", "_", "_", "_", "_", "_", "_"]

此外,如果你再次猜测 C,它只会打印

Correct!
["C", "_", "_", "_", "_", "_", "_"]

再次。理想情况下,我希望它做的是返回["C", "_", "_", "C", "_", "_", "_"]用户第一次猜到 'C'。目前,游戏只能工作,如果字典中的所有单词没有任何重复出现的字符。

你能提供的任何帮助将不胜感激。谢谢!

2

一旦你在pos(guess)中找到一个,你就会停下来检查是否有任何进一步的出现。因此,你只得到第一次出现。显然,为了解决这个问题,当你发现一些东西时不要停下来。相反,每次都要完全遍历这个词。

例如,在pos(guess)中,返回在单词中找到字母的索引列表,并在update_board(x)中循环遍历您获得的索引,而不是仅将一个下划线替换为猜测。

1

你可以使用数组来解决它:

import random
dictionary = ("CROWS","CHICKEN")
answer = random.choice(dictionary)
answer_length = len(answer)
victory = True
print("""
    I have chosen a word.  Your job is to guess it. I will help you
    keep track.
    """)
print("The word I have chosen is {} letters long.\n".format(answer_length))
underscores = []
for character in answer:
    underscores.append("_")
print(underscores)
ar=[]
while victory:
    guess = input("\nPlease guess a letter: ").strip().capitalize()
    def pos(guess):
        position = 0
        for letter in answer:
            if letter != guess:
                position += 1
            else:
                print("Correct!")
                ar.append(position)
                position += 1
        return ar
    def update_board(x):
        global underscores
        if guess in answer:
            underscores[x] = guess
        else:
            print("This letter is not in the word")
        return underscores
    def winner():
        global underscores
        global victory
        if "_" not in underscores:
            print("YOU HE WON!")
            victory = False
    pos(guess)
    for x in ar:
        print(update_board(x))
    del ar [:]
    winner()

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(794)
为什么当我花费向量计算时 hessian是 0
上一篇
Unity坦克炮塔旋转与鼠标
下一篇

相关推荐

  • python中def用法详解定义函数的基本方法

    示例示例def 关键字用于定义函数,是Python中定义函数的必备关键字,它的语法格式如下:def 函数名(参数列表):…

    2023-04-14 01:48:49
    0 31 15
  • python股票数据:利用Python技术分析股票市场行情

    Python股票数据是指通过Python编程语言从股票市场获取股票数据的过程。它可以帮助投资者快速、准确地获取当前股票的价格、成交量和其他相关信息,以便做出更好的投资决策。…

    2023-06-27 08:07:46
    0 64 96
  • python乘法表倒三角9×9

    Python乘法表倒三角是指以下形式的乘法表:1*1=1…

    2023-05-02 12:43:17
    0 61 76
  • python图片文字识别代码解锁新的信息发现之旅

    Python图片文字识别代码是使用Python语言来实现从图片中识别文字的功能,可以帮助我们快速提取图片中的文字信息。下面是一段Python图片文字识别的代码:…

    2023-04-29 01:22:43
    0 79 49
  • python画波形图探索数据的时间序列趋势

    Python可以使用库来绘制波形图。下面是一个简单的例子,使用正弦函数绘制一个波形图:…

    2023-05-10 08:55:12
    0 50 15
  • python的yield方法:利用Python的yield方法提升编程效率

    示例示例yield 是一个类似 return 的关键字,只是这个函数返回的是一个生成器。Python 中 yield 的作用就是把一个函数变成一个 ,带有 yield 的函数不再是一个普通函数,Python 解释器会将其视为一个 ,调用 yield 的函数不再是调用函数,而是生成一个 。…

    2023-04-10 04:13:58
    0 28 25
  • python灰度化:如何使用Python实现图像灰度化

    Python灰度化是指将图像从彩色变为灰度图像的过程,使用灰度图像可以更容易地识别和处理图像中的特征。Python灰度化的代码如下:…

    2023-04-21 01:15:37
    0 96 20
  • python入参:从Python参数创建可靠的应用程序

    Python入参是指在Python函数中传递参数的方式。Python函数可以接受不定数量的参数,可以是位置参数、关键字参数、默认参数、可变参数和命名参数。下面是一个示例代码:…

    2024-02-28 07:41:01
    0 32 44

发表评论

登录 后才能评论

评论列表(71条)