类汉字Python程序

2024-04-24 02:56:12 发布

您现在位置:Python中文网/ 问答频道 /正文

注意:我无法使用列表来解决此问题。这对字符串操作是一个挑战。你知道吗

它应该让用户输入一个单词并显示星号,像hangman一样填写猜测的字母

def word_guess():


    word = input('Enter the word: ')

    print('\n'*100)

    print('Guess the word: ')

    guess_string='*' * len(word)

    print(guess_string)

    letters_left = word
    letters_guessed = '*' * len(word)

    while '*' in letters_guessed:
        new_left = ''
        new_display = ''
        guessed = ''
        guess = input('Enter a letter: ')

        guessed += guess

        while guess in guessed:
            print('Already guessed. Try again.')
            guess = input('Enter guess: ')

        for char in letters_left:
            if guess == char:
              new_display += char
              new_left += '*'
            else:
              new_display += '*'
              new_left += char
        letters_guessed = new_display

        letters_left = new_left

        print(new_display)

这将产生以下结果:

notice how the entire input is spelled out and the asterisks don't disappear

这让我很不安。我克服这个问题的最后一个策略。你知道吗


Tags: theinnewinputstringlendisplayleft
2条回答

这里有一堆奇怪的东西可能会有助于修复。你知道吗

  1. 每次通过循环时,您都将guessed重置为''。可能想在外面。

  2. 设置guessed += guess,然后立即使用while guess in guessed。。。所以你总是会得到Already guessed提示至少一次

  3. 我不太清楚letters_left的意义是什么

  4. else子句中的new_display += '*'不同,您可能希望从letters_guessed中提取显示字符,以便显示所有已猜测的字母(对于未猜测的字母,*

对于您似乎要问的特定问题:

guessed = ''
guess = input('Enter a letter: ')

guessed += guess

while guess in guessed:

想想这是怎么回事。它将guessed设置为''。然后,如果我键入a,它将guessed设置为'' + 'a',即'a'。然后,while guess in guessed:会一直问我新的猜测,直到其中一个不在'a'。你知道吗

这显然没有任何用处。我想你想做的是这样的:

guessed = '' # before the loop

while '*' in letters_guessed:
    new_left = ''
    new_display = ''
    guess = input('Enter a letter: ')

    while guess in guessed:
        print('Already guessed. Try again.')
        guess = input('Enter guess: ')

    guessed += guess # after we've accepted the guess

现在,guessed是我迄今为止尝试的所有猜测,不包括我现在尝试的猜测,而不仅仅是我现在尝试的猜测,因此while循环更有意义。你知道吗

当然,你的程序还有多个其他的bug,所以如果不修复它们,它仍然无法工作,但这应该能让你克服那个bug。你知道吗


同时,您应该考虑执行以下操作之一:

  • 添加一些临时的print调用,以便在不确定发生了什么的地方转储相关变量。你知道吗
  • 在调试器中运行代码,这样您就可以闯入并探索在您感到困惑的地方发生了什么。你知道吗
  • Python Tutor这样的可视化工具中运行代码,这样您就可以一步一步地以图形化的方式查看所有变量的情况。你知道吗

相关问题 更多 >