Ошибка в операторе Walrus

Я работал с оператором Моржа. Я заставлял пользователя угадывать число от 0 до 10. Затем его предположение добавляется в список, полный их предположений. Но как только они вводят 0, он просто распечатывает список.

Проблема, с которой я столкнулся, заключается в том, что первое предположение не попадает в список. Я пробовал распечатывать список каждый раз, когда добавлялось значение, но список просто не включал первый ввод. Как я могу заставить оператора Walrus добавить первое значение в мой список?

Вот мой код:

import traceback

def checkAnswerWalrus():
    listOfGuesses = []  

    while (numberGuessed := int(input(f"Guess a number between 0 to 10 : "))) != 0:
        listOfGuesses.append(numberGuessed)
        print(listOfGuesses)

    if numberGuessed == 0:
        print(listOfGuesses)

    return(True)


if __name__ == "__main__":
    try:
        numberGuessed = int(input(f"Guess a number between 0 to 10 : "))
        checkAnswerWalrus()
    except Exception as error:
        traceback.print_exc()

    finally:
        print(f":)")

Вот пример вывода, где "2" не добавляется к списку:

C:/Python3.8/python.exe c:/Users/mayab/Desktop/ict/python/misc/testWalrus.py
Guess a number between 0 to 10 : 2
Guess a number between 0 to 10 : 3
[3]
Guess a number between 0 to 10 : 4
[3, 4]
Guess a number between 0 to 10 : 5
[3, 4, 5]
Guess a number between 0 to 10 : 6
[3, 4, 5, 6]
Guess a number between 0 to 10 : 7
[3, 4, 5, 6, 7]
Guess a number between 0 to 10 : 0
[3, 4, 5, 6, 7]
:)

1 ответ

Первый вопрос задается и первое число вводится в tryраздел, в котором вы не добавляете значение в список. Просто удали его и позволь checkAnswerWalrus() делать всю работу.

Другие вопросы по тегам