2013-07-23 3 views
0

я работаю через начинающий Учебник Python и я пытаюсь сделать немного больше, чем учебник просит, добавив условия для вариантовPython условные, если оператор не суметь

elif option == "2": 
    print "Choose a number for opt 2" 
    var_in = raw_input("> ") 

    if 0 < var_in < 5 or 1 <= var_in < 5: 
     print "between 1-5" 
    elif var_in == "0": #works 
     print "Zero" 
    else: 
     print "Greater than 5!" #works 

Если я ничего вводить кроме 0 для var_in, я получаю сообщение «Больше 5!».

Я также попытался с помощью:

elif option == "2": 
    print "Choose a number for opt 2" 
    var_in = raw_input("> ") 

    if var_in in range(1, 5): 
     print "between 1-5" 
    elif var_in == "0": #works 
     print "Zero" 
    else: 
     print "Greater than 5!" #works 

имевших тех же результатов, что и выше.

Любая помощь будет высоко оценена. Благодаря!

+0

Почему вы проверить как '0 user2357112

+1

конвертировать в целое. – Jiminion

ответ

1

var_in - это строка, а не целое число. Вы делаете это как:

try: 
    var_in = int(raw_input("> ")) 
except: 
    print "Incorrect input." 
else: 
    if 0 < var_in <= 5 : 
     print "between 1-5" 
    elif var_in == 0: #works 
     print "Zero" 
    else: 
     print "Greater than 5!" #works 
+0

Я раньше не использовал 'try' и 'except'. Я предполагаю, что это означает, что если int не введен, он не с ошибкой? – NULLZ

+0

Вместо использования обложки 'except', могу ли я рекомендовать' except ValueError'? Лучше использовать только те исключения, которые вы ожидаете. – SethMMorton

+0

@ D3C4FF Если ваша строка не может быть преобразована в 'int', Python вызывает« ValueError ». Блок «try: except: except» может использоваться для обнаружения этой ошибки и предоставления альтернативного пути выполнения. – SethMMorton

1

raw_input возвращает строку. Вы не можете достоверно сравнивать строки с числами; Python 2 даст вам бессмысленный результат, а Python 3 будет TypeError. Включите его в int, прежде чем делать сравнения:

user_input = int(raw_input('> ')) 
+0

Отлично, это исправлено. Как получилось == '0' все еще работает? – NULLZ

+1

@ D3C4FF: '' 0'' - это строка. Сравнение строк для равенства с другими строками работает так, как вы ожидали. – user2357112

Смежные вопросы