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.
This statement:
makes
numa 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_inputtoinput, 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 thanTrueorFalsein each of your comparison attempts).