我的刽子手游戏中的字符串连接/子字符串问题
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 的单词。
我对 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 的单词。