2016-07-22 2 views
-5

Я новичок в программировании. Согласно моей книге, этот код должен получить ошибку.Python Crash Course: Использование int() для принятия числового ввода

>>> age = input("How old are you? ") 
How old are you? 21 
>>> age >= 18 
    Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
vTypeError: unorderable types: str() >= int() 

В Sublime я сохранил файл .py: This is my .py file.

Затем в терминале, когда я попытался запустить его. Это не принесло мне ошибки. Впервые я запустил его, введя возраст 21 без квот, он вернул True. Затем я ввел 17, он вернул False.

Во-первых, Как мой компьютер знает, что они целые? Я не ввел age = int (возраст).

Во-вторых, когда я ввожу «21», его возвращается True. Нет ошибки. Почему это происходит?

Как сравнить строку и целое число?
, и когда я вводил «17» в качестве моего возраста, он снова возвращал True. ** Почему это происходит?

Это не только сравнивая жало и целое, но дает неправильный ответ и на этот раз. **

This is the screenshot of my terminal window

This is the respective terminal window after i installed python 3This is my new .py file after installing python 3.

+2

Вы используете python2 и книга использует python3, вход в Python 2 эквивалентно 'Eval (raw_input())' –

+0

См http://stackoverflow.com/a/4915366/1222951 –

ответ

2

Вы используете Python 2 и автор книги является используя Python 3.

В Python 2 input пытается оценить введенное значение, поэтому строка '21' фактически становится 21 как int.

Как отметил @Siddharth в комментариях, str > int всегда будет оценивать True в Python 2. В Python 3 он поднимет ошибку, указанную в книге.

+0

В Python 2 интерпретатора не бросает ошибку в случае сравнения строк с int, а всегда считает, что строка имеет более высокое значение, чем int. –

+0

@DeepSpace я ввел raw_input вместо ввода. и сохранил файл. Он по-прежнему не дает никаких ошибок при вводе 21:/в терминал. –

+0

@RishabhChopra Как заметил Сиддхарт, 'str> int' всегда будет оценивать' True' в Python 2. В Python 3 он будет вызывать ошибку, указанную в книге. – DeepSpace

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