我的刽子手游戏中的字符串连接/子字符串问题

String Concatenation / substring problem in my hangman game

我对 python 上的子字符串比较陌生,并且在我的刽子手游戏中遇到过问题。 这个问题是非常随机的,就像你猜单词中的第二个字母说 'e' (在你好)它没有注册因为它没有改变空白。第三个字母说 'l' 它放在第二个空白位置说 h l _ _ 而不是 h _ l _ _。这是我的代码:

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 的单词。