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:
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).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With