[Tutor] Most pythonic input validation

Alan Gauld alan.gauld at btinternet.com
Fri Oct 16 14:41:38 CEST 2009


"Robert Johansson" <robert.johansson at math.umu.se> wrote

> What if a valid user input has to be an integer between 10 and 20?
> Would it be pythonic to add a test like:
>
> If prompt in range(10,21):
>  ...
> else:
>   ... raise an error

Yes and it could be a ValueError in this case.

You could also test using conditions which, for a wide range,
would be more efficient

if minVal < choice < maxVal:
    ...
else:
    raise ValueError("Choice (%d) should be between %d and %d" % (choice, 
minVal, maxVal) )

> If I understand the error handling correctly you can add your own user
> defined error, but is that really what you should do in that case?

In this case I'd just use ValueError although I would add a string message
to state the valid range, as shown above.

But it is a trivial task to create a custom Exception class:

class RangeError(Exception): pass

and then

raise RangeError("Choice (%d) should be between %d and %d" % (choice, 
minVal, maxVal) )

HTH,


-- 
Alan Gauld
Author of the Learn to Program web site
http://www.alan-g.me.uk/ 




More information about the Tutor mailing list