#python-3.x
#python-3.x
Вопрос:
Всякий раз, когда я пытаюсь добавить (догадки) к переменной all_guesses, она, по-видимому, заменяет существующее значение из предыдущего цикла. Я хочу, чтобы программа записывала все количество догадок игрока за раунд игры, но записывала только самое последнее значение. Я убедился, что переменная не находится в цикле while, чтобы она не перезаписывала ее, так что не так? Я действительно новичок в программировании на Python, поэтому, похоже, я не могу понять это. Каждый раз, когда я запускаю цикл, значения guessed и all_guesses сбрасываются на исходные.
Это фрагмент моей программы:
def main():
guesses = 0
guessed = []
all_guesses = []
guess = input('nPlease guess a letter: ').lower()
letter = 'abcdefghi'
answer = random.choice(letter)
while len(guess) != 1 or guess not in letter:
print("nInvalid entry! One alphabet only.")
guess = input('Please guess a letter: ')
while len(guess) < 2 and guess in letter:
if guess in guessed:
guess = input("nYou've already guessed that! Try again: ").lower()
else:
if guess == answer:
guesses = guesses 1
played = played 1
print("nCongratulations, that is correct!")
replay = input('Would you like to play again? Type y/n: ').lower()
all_guesses.append(guesses)
Комментарии:
1. Я сомневаюсь, что этот код вообще будет работать. Что
played
, например?2. Я не публиковал полный код, так как он слишком длинный. Если вы попытаетесь запустить предоставленный мной код, это определенно не сработает. Played представляет собой сыгранные раунды, но я не показывал эту часть программы.
Ответ №1:
Короткий ответ будет заключаться в том, что all_guesses
он должен быть глобальным, определенным вне main
, и логика воспроизведения также должна быть обернута вокруг main
.
Кажется, вам не хватает логики, поскольку вы никогда не изменяете guessed
, но ожидаете найти там что-то. И в коде есть тупики и другие недостающие части. Насколько я могу догадаться, это примерно то, что вы пытаетесь сделать:
from random import choice
from string import ascii_lowercase as LETTERS
all_guesses = []
def main():
guessed = []
answer = choice(LETTERS)
guess = input('nPlease guess a letter: ').lower()
while len(guess) != 1 or guess not in LETTERS:
print("nInvalid entry! One alphabet only.")
guess = input('Please guess a letter: ').lower()
while len(guess) == 1 and guess in LETTERS:
if guess in guessed:
guess = input("nYou've already guessed that! Try again: ").lower()
continue
guessed.append(guess)
if guess == answer:
print("nCongratulations, that is correct!")
break
guess = input("nIt's not that letter. Try again: ").lower()
all_guesses.append(len(guessed))
while True:
main()
replay = input('Would you like to play again? Type y/n: ').lower()
if replay == 'n':
break
print(all_guesses)
Комментарии:
1. Спасибо, что помогли мне как можно лучше, я знаю, насколько моя программа действительно плоха и запутанна. Я в основном самообучаюсь и плохо справляюсь с этим.