3

I am quite a newbie in Python. I wrote this and got this error when i typed a letter in the input:

TypeError: unorderable types: str() >= int()

Here is the code that I wrote:

user_input = input('How old are you?: ')
if user_input >= 18:
   print('You are an adult')
elif user_input < 18:
     print('You are quite young')
elif user_input == str():
     print ('That is not a number')
Andrea
  • 19,134
  • 4
  • 43
  • 65
Keretto
  • 57
  • 1
  • 2
  • 9

3 Answers3

8

You should do:

user_input = int(input('How old are you?: '))

so as you explicitly cast your input as int, it will always try to convert the input into an integer, and will raise a ValueError when you enter a string that can't be converted to an int. To handle those cases, do:

except ValueError:
    print('That is not a number')

So, the full solution might be like below:

try:
    user_input = int(input('How old are you?: '))
except ValueError:
    print('That is not a number')
else:
    if user_input >= 18:
        print('You are an adult')
    else:
        print('You are quite young')
wjandrea
  • 28,235
  • 9
  • 60
  • 81
Ahsanul Haque
  • 10,676
  • 4
  • 41
  • 57
  • Thanks everyone I understand what you mean but it is saying invalid syntax now (except ValueError:) – Keretto Nov 28 '15 at 23:45
1

user_input is a str, you're comparing it to an int. Python does not know how to do that. You will need to convert one of them to the other type to get a proper comparison.

For example, you can convert a string to an integer with the int() function:

user_input = int(input('How old are you?: '))
Andrea
  • 19,134
  • 4
  • 43
  • 65
bperson
  • 1,285
  • 10
  • 19
0
user_input = input('How old are you?: ')
try:
    age = int(user_input)
except ValueError:
    print('Please use an integer for age')
    continue          # assuming you have this is an input loop
if user_input < 18:
     print('You are quite young')
ennuikiller
  • 46,381
  • 14
  • 112
  • 137