我的子手游戏中的字符串串联/子字符串问题

问题描述

我对python上的子字符串比较陌生,在我的子手游戏中遇到了问题。 这个问题是非常随机的,例如当您猜单词“ e”中的第二个字母(打招呼)时,它不会注册,因为它不会更改空格。在第三个字母说“ l”的情况下,它在第二个空白位置说“ h”,而不是“ h”。这是我的代码

prevIoUsguesses = ''
secret = "hello"
blanks = "_ "*len(secret)
detectletter= list(secret)
bruh = list(detectletter.pop())
game = 0
while game == 0:
     print(blanks)
     guess = input("\n" "l for a letter guess,w for a word guess")
     if guess == "l":
        letterguess = input("What is your letter guess")
     if letterguess in prevIoUsguesses:
        print("You have already guessed that. Here are the letters you have guessed:" + prevIoUsguesses)
     if letterguess in detectletter:
       if letterguess not in prevIoUsguesses:
          print("Correct!")
          guessbruh = str(prevIoUsguesses + ' ' + letterguess)
          guessbruh.replace('"','')
          for checker in range(10):
              locblanks = secret.find(letterguess)
              locblanks = locblanks + 1
              blanks = blanks[:locblanks].replace('_',letterguess) + blanks[locblanks:]
          if blanks == secret:
              print("Correct! You Win!")
              game = 1
          print("You have guessed these letters :" + prevIoUsguesses)
       if letterguess not in detectletter:
         print("Wrong")
         guessbruh = str(prevIoUsguesses + ' ' + letterguess)
         guessbruh.replace('"','')
         print("You have guessed these letters :" + prevIoUsguesses)
       elif guess == "w":
         wordguess = input("What is your word guess")
         if wordguess == secret:
          print("Correct! You Win!")
          game = 1
    

解决方法

尝试将问题分解为更小,更易于管理的部分。例如,下面的示例显示了如何输出仅显示当前猜测字母的单词。

secret = "hello"
guesses = ['e','o']

def getWordWithGuesses(word,guesses):
    """If the word is hello and we have guessed 'o' and 'e',return '_e__o'"""
    guess_word = ""
    for letter in word:
        if letter in guesses:
            guess_word += letter
        else:
            guess_word += "_"
    return guess_word

print(getWordWithGuesses(secret,guesses))

为程序的每个部分考虑一个小功能。您可以让每个部分单独工作,然后再将它们结合在一起。

您的代码存在问题,围绕for checker in range(10)部分。我不确定您要在其中做什么,但是您没有使用checker,因此不会在单词中的每个字符上建立索引。注意我如何使用for letter in word,这将适用于任何长度的单词,而不仅仅是长度为10的单词。