2015-12-29 10 views
1

Я делаю определенный онлайн-курс, и я выполнил задание с помощью этого кода, но я все еще могу вызвать ошибку с определенными входами, и я не могу понять, почему. Я попросил наставников курса (используя псевдокод), и они говорят, что есть проблема с моей инструкцией try/except.Попробуйте исключить проверку ошибок

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

Вот программа:

largest = None 
smallest = None 

while True: 

    num = input("Enter a number: ") 


    if num == 'done': break 

    try: 
     float(num) 

    except: 
     print("Invalid input") 
     continue 

    if largest is None: 
     largest = num 
    elif largest < num: 
     largest = num 

    if smallest is None: 
     smallest = num 
    elif smallest > num: 
     smallest = num 

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

Если ввести следующие значения в качестве входных 1 2 3 pk 27 -37 done, выход Max: 3, Min -37.

Это сводит меня с ума. Я знаю, почему это происходит.

+0

Имея трудное время воспроизведения этого, как вы ввода в нечисловых значений? – Stedy

+0

записи идут 1, 2, 3, pk, 27, -37. Любая строка может идти на место «pk» – GotYaNumba

+0

забыла добавить «done» во входы – GotYaNumba

ответ

3

Вы вводите ввод в поплавок, но не сохраняете его для последующих проверок.

Так позже после того, как за исключением блока, Python делает сравнение строк и сравнивая строку "3" в строку "27" и так '3' является «больше», чем '2' он считает "3" больше, чем «27», так же, как "b" больше чем "aaabbbbzzz".

Чтобы исправить это изменить:

float(num) 

к этому:

num = float(num) 
+0

Отлично! Делает так много смысла! Из-за этого сообщения узнал что-то о сравнении строк. Спасибо! – GotYaNumba

+0

Рад, что это помогло, это была крошечная ошибка, которую любой мог сделать. Если это поможет, вы можете позволить другим людям узнать, что у вас есть хороший ответ, щелкнув галочку рядом с моим вопросом, как только он появится. –