Итак, я прохожу онлайн-курс Python, и последнее задание выглядит следующим образом: «Напишите программу, которая многократно запрашивает у пользователя целые числа, пока пользователь не введет« готово ». После того, как« готово »будет ...

-1
Dave Phillips 23 Янв 2021 в 21:33

3 ответа

Лучший ответ

list.append(user_input) добавляет строку в список, поэтому все сравнения лексикографичны.

Кроме того, list - ужасное имя, не скрывайте встроенные имена.

И два предложения по стилю:

  • Избегайте использования переменных для управления циклом. При необходимости используйте while True и break

  • Обычно считается очень плохим стилем перехватывать общий тип исключения.


...
li = []

while True:
    user_input = input("Enter a Value: ")
    try:
        li.append(int(user_input))
    except ValueError:
        if user_input == "done":
            break
        print("Invalid input")
0
DeepSpace 23 Янв 2021 в 18:52

Вызов int преобразует строку в int и возвращает ее. Здесь вы игнорируете возвращаемое значение, поэтому фактически вы сравниваете входные данные лексикографически , а не численно. Если вы сохраните возвращаемое значение, все будет в порядке. например.:

user_input = int(user_input)
0
Mureinik 23 Янв 2021 в 18:38

Ты делаешь

list.append(user_input)

Но что ты должен сделать, это

list.append(int(user_input))

Так как

int(user_input)

Не превращает user_input в целое число, он возвращает целое число из user_input. Таким образом, вы также можете: -

user_int_input = int(user_input)
list.append(user_int_input)

Также не используйте список имен переменных, список - это предопределенное ключевое слово Python

0
Gurneet singh 23 Янв 2021 в 18:42
65862979