Я пытаюсь сделать игру «Виселица» на Python для практики (я новичок в программировании и новичок в Python). Когда я пытаюсь проверить, находится ли «chosenLetter» в «randomWord», а не в « CorrectLettersUsed', он просто решает, что он есть здесь, даже если это не так. Когда я прохожу цикл while в первый раз, он работает так, как задумано, но как только в «correctLettersUsed» появляется буква и я прохожу ее снова, это не работает.
Код: Выделить всё
#get random word from list
randomWord = wordList[random.randint(0, len(wordList))]
#counters and correct letters used
winAmount = len(randomWord) -1
correctLettersUsed = []
pointCounter = 0
wrongGuesses = 0
#loops until win conditions are met
while len(correctLettersUsed) != winAmount:
#print for testing
print(randomWord)
chosenLetter = input("Pick a letter: ")
#checks if the chosen letter is in the random word and not in the used letters
if chosenLetter in randomWord and not correctLettersUsed:
pointCounter += 1
print("Correct!")
correctLettersUsed.append(chosenLetter)
print("Correct letters: " + str(correctLettersUsed))
else:
wrongGuesses += 1
print("Incorrect. " + "You have " + str(6 - wrongGuesses) + " guesses left.")
Я ожидаю, что утверждение if будет истинным. Я попытался полностью удалить «и не правильное письмо», и тогда все работает как положено. Однако вы можете просто использовать одну и ту же букву снова и снова, чтобы выиграть. Все, о чем я могу думать, это то, что «и не» просто проверяет, есть ли что-нибудь внутри «correctLettersUsed», и если это так, то это будет правдой, а оператор if вернет ложь, я не уверен, как это исправить. Я также пробовал использовать инструмент отладки vscode, но так и не смог разобраться.
Подробнее здесь:
https://stackoverflow.com/questions/787 ... ng-and-not