Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why is this logical expression in python False?

My question is, why are these expressions False?

Python 2.6.4 (r264:75706, Dec  7 2009, 18:45:15) 
[GCC 4.4.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.

>>> num = raw_input("Choose a number: ")
Choose a number: 5
>>> print num
5
>>> print ( num < 18 )
False
>>> print ( num == 5 )
False

Because if i try this:

>>> print ( num > 0 )
True

The expression works fine.

like image 322
W3ctor Avatar asked Dec 07 '22 03:12

W3ctor


1 Answers

This statement:

num = raw_input("Choose a number: ")

makes num a string, not a number, despite its misleading name. It so happens that Python 2 lets you compare strings with numbers, and in your version considers all strings larger than all numbers (the contents of the string play no role).

Use num = int(num) to make an integer (and be sure to use a try/except to catch possible errors when the user has typed something other than a number!) before you start comparing.

(In Python 3, the function's name changes from raw_input to input, and it still returns strings; however in Python 3 comparing a string with a number is considered an error, so you would get an exception rather than True or False in each of your comparison attempts).

like image 93
Alex Martelli Avatar answered Dec 09 '22 17:12

Alex Martelli