strings and ints consistency - isinstance

Larry Hudson orgnut at yahoo.com
Thu Sep 22 16:39:10 EDT 2016


On 09/22/2016 06:40 AM, Sayth Renshaw wrote:
[snip...]
>
> True it failed, just actually happy to get it to fail or pass successfully on int input.
>
> Just felt it was a clearer and more consistent approach to verifying input, then most of the varied and rather inconsistent approaches I have seen in trying to get this to work.
>
> Half opt for try except the other half if else and then implement them largely differently. Every many and varied approach str2bool(), isalpha() using list with isinstance(var, [ int, str, bool]) etc.
>
> Anyway back to the old drawing board.
>
> Cheers
>
> Sayth
>

IMHO...  This sort of thing deserves to be written as a separate function which can then be 
called anytime, anyplace.  This keeps your validation and repeated input in one place and is 
done automatically, and lets your main program simply assume the input is valid.

For example, here is the help message for the number input function I wrote for my personal 
utility library:

---------------
get_num(prmt, min_val=None, max_val=None, flt=False)

Get a number from the console

     Parameters:
         prmt:       The prompt to be used with the input function, required.
         min_val:    The minimum permissible value, or None if no minimum (the default)
         max_val:    The maximum permissible value, or None if no maximum (the default)
         flt:        If True, accepts and returns floats
                     If False, accepts and returns integers (the default)

     Invalid input or out-of-range values are not accepted and a warning message
         is displayed.  It will then repeat the input prompt for a new value.
---------------

Admittedly, this may be overkill for general use, but it IS very handy.  Even if it is overkill, 
it is still very easy to use.  Similar validated input functions are useful as well — such as a 
Yes/No function among others.

If you're interested, I could post the source for this version, but if you think of it as a 
generic function rather than for a specific situation, it is pretty straight-forward to write. 
something similar.

-- 
      -=- Larry -=-



More information about the Python-list mailing list