編輯:已解決。謝謝bruno desthuilliers!
我正在爲一個學校作業做一個Hang子手遊戲,而且我遇到了一個錯誤。我的程序無法正確識別何時進行了正確的猜測,而是會說每個猜測都不正確。Hang子手代碼不會檢測到正確的猜測
我會分解我的程序的主循環。前後的所有代碼都是按照預期工作的介紹性和結論性對話。問題在於猜測這個詞。
我的代碼的這部分工作正常 - 這是處理不同類型的無效輸入。
while "_" in placeholder:
guess = input("Guess a letter: ").lower()
if not guess.isalpha():
print("Please enter a letter.")
elif not len(guess) == 1:
print("Please enter one letter only.")
elif guess in previous_guesses:
print("You have already guessed that letter. Please guess a letter")
這是有問題的部分。這是程序檢查被猜測的字母是否在單詞中的地方。 word_letters只是一個單詞中的字母列表 - 由word組成.split()
elif guess in word_letters:
print("'" + guess + "'" + " is in the word. Good guess!")
previous_guesses.append(guess)
index = word_letters.index(guess)
for index, letter in enumerate(word_letters):
if letter == guess:
placeholder[index] = guess
再次,這部分在這裏工作正常。只有在猜測錯誤時纔會發生,但即使猜測是正確的,也會發生。
else:
print("'" + guess + "'" + " is not in the word. Try again.")
previous_guesses.append(guess)
stage += 1
Hangman.draw(stage)
我真的不明白爲什麼這樣不能正常工作。我創建了一個測試模塊,它可以準確模擬我的主程序中發生了什麼,並且它可以正常工作。
placeholder = ['_', '_', '_', '_', '_']
word_letters = ['h', 'e', 'l', 'l', 'o']
guess = input("guess ")
if guess in word_letters:
print("It works")
index = word_letters.index(guess)
for index, letter in enumerate(word_letters):
if letter == guess:
placeholder[index] = guess
print(placeholder)
else:
print("It didn't work")
任何人都可以向我解釋什麼是我的主程序的問題是什麼?
要注意的是for循環也有其他陣營運行時我認爲當for循環失敗或從未運行。 –
我不知道什麼是錯的。你的代碼工作正常。如果您打印佔位符,它的作用與您的測試相同?您能否提供更多信息錯誤的測試結果? – Stef2i