Хобрук: Ваш путь к мастерству в программировании

Я не могу понять этот код цикла while с try / except, вложенный в (python)

5.2. Напишите программу, которая постоянно запрашивает у пользователя целые числа, пока пользователь не введет «готово». После ввода «готово» распечатайте наибольшее и наименьшее из чисел. Если пользователь вводит что-либо, кроме действительного числа, поймайте его с помощью try / except, выведите соответствующее сообщение и проигнорируйте номер. Введите 7, 2, bob, 10 и 4 и сравните результат, приведенный ниже.

largest = None
smallest = None

while True:
    try:
        num = input("Enter a number: ")
        if num == "done" : break
        print(num)
        if num > largest:
            largest=num
        if num < smallest:
            smallest=num
    except:
        print("Invalid input")


print("Maximum is", largest)
print("Minimum is", smallest)

desired output:                  my output:
Invalid input                    2 ← Mismatch
Maximum is 10                    4
Minimum is 2                     5
                                 maximum is 5(it prints the last input)
                                 minimum is None

Я новичок в программировании и питоне, поэтому, если ошибка очевидна, пожалуйста, разбейте ее как можно больше. Большое спасибо.

28.07.2018

  • Ни на одном этапе вашей программы вы не имеете дело с числами - 10 - это наименьшее значение из ваших записей при работе со строками, поскольку они сравниваются посимвольно. 29.07.2018

Ответы:


1

Программа никогда не достигнет print("Invalid input"), поскольку нет ошибки, которая могла бы быть выдана выше. Если бы вы преобразовали num в целое число с num = int(num) после того, как вы отметили if num == "done", тогда программа обнаружит недопустимые входные данные, такие как "bob"

28.07.2018

2

input() возвращает строку, поэтому вам нужно преобразовать ввод в целое число с int(), прежде чем сравнивать его как число. Также удалите ненужные print(num).

Так что измените:

print(num)

to:

num = int(num)
28.07.2018
  • Верно. Фиксированный. Спасибо. 29.07.2018

  • 3

    Проблема в том, что вы используете строки, а не числа. 10 - это число, оно хранится в виде числовых данных, и вы можете делать такие вещи, как сравнивать размер, складывать, вычитать и т. Д. В частности, это целое число, число без десятичных знаков (компьютеры хранят числа по-разному). '10' - строка, набор символов. Эти символы представляют собой числа, но компьютер этого не знает. Насколько можно судить, это просто текст.

    Чтобы преобразовать строку в целое число, вы можете просто num = int(num). Если число можно преобразовать в целое число, так оно и будет. В противном случае вы получите сообщение об ошибке. Вот почему инструкции говорят вам использовать блок try / catch. Он поймает эту ошибку.

    28.07.2018

    4

    Ваш вопрос уже объясняет, что вы хотите сделать

    Если пользователь вводит что-либо, кроме действительного числа, поймайте его с помощью try / except и выведите соответствующее сообщение

    Объяснение этого состоит в том, что вам нужно int(num) после проверки done, чтобы попытаться преобразовать строку в целое число и уловить исключение, которое происходит для нецелочисленных входов.

    Я предлагаю вам удалить команду try except, введите что-нибудь, кроме числа, и понаблюдайте за поведением

    28.07.2018
  • int(input("...")) выдаст ошибку, когда пользователь введет 29.07.2018
  • Новые материалы

    Создание кнопочного меню с использованием HTML, CSS и JavaScript
    Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

    Внедрите OAuth в свои веб-приложения для повышения безопасности
    OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

    Классы в JavaScript
    class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

    Как свинг-трейдеры могут использовать ИИ для больших выигрышей
    По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

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

    Обзор: Машинное обучение: классификация
    Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

    Разработка расширений Qlik Sense с qExt
    Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..