Search code examples
pythonparsinguser-input

Using isdigit for floats?


a = raw_input('How much is 1 share in that company? ')

while not a.isdigit():
    print("You need to write a number!\n")
    a = raw_input('How much is 1 share in that company? ')

This only works if the user enters an integer, but I want it to work even if they enter a float, but not when they enter a string.

So the user should be able to enter both 9 and 9.2, but not abc.

How should I do it?


Solution

  • Use regular expressions.

    import re
    
    p = re.compile('\d+(\.\d+)?')
    
    a = raw_input('How much is 1 share in that company? ')
    
    while p.match(a) == None:
        print "You need to write a number!\n"
        a = raw_input('How much is 1 share in that company? ')