[Tutor] Who uses input()? [was Re: question on "input"]
Brian van den Broek
bvande at po-box.mcgill.ca
Mon Jul 18 19:54:22 CEST 2005
Nathan Pinno said unto the world upon 2005-07-18 09:36:
> Danny,
>
> It sure did, though I wish there was an easier way of coding it than
> int(raw_input())! Any ideas would gladly be appreciated.
<snip second question>
> Thanks,
> Nathan Pinno.
<snip Danny's explanation why use of input for 'private code' can
still be dangerous>
Hi Nathan,
If you find it irritating to type int(raw_input()), just wrap it all
into a function. The minimal thing would be:
>>> def get_int(prompt):
return int(raw_input(prompt))
But, if you are doing that, might as well make the function do a bit more:
>>> def get_int(prompt):
if not prompt.endswith('\n'):
prompt += '\n'
while True:
try:
temp = raw_input(prompt)
return int(temp)
except ValueError:
print "'%s' is not an integer. Please try again.\n" %temp
>>> a = get_int('I wanna number!')
I wanna number!
OK, one.
'OK, one.' is not an integer. Please try again.
I wanna number!
5
>>> a
5
>>>
If you make such a function, test it well, make it general, etc., then
you can put it into your own user_input module and never have to write
either int(raw_input) or input checking code again. (I've done
something like this, with extra things like making sure prompt is an
appropriate type of object, etc. Notice what happens as it is now if
you do get_int(757575).)
HTH,
Brian vdB
More information about the Tutor
mailing list