[Tutor] Re: Why can't I make this function work?
Danny Yoo
dyoo at hkn.eecs.berkeley.edu
Fri Jul 16 19:28:58 CEST 2004
> Thanks for the help, I've re-written the funcion as below and it seams to
> work correctly now.
>
> def Get_int():
> "Function to collect a integer from the user"
> type_check = 0
> while type_check == 0:
> try:
> integer = int(raw_input())
> type_check = 1
> except:
> print "Invalid input, try agin. ",
> return integer
Hi Matt,
One nitpick: When we try interrupting a program by pressing Control-C,
that actually raises a "KeyboardInterrupt" exception to make the program
stop.
However, the loop above will disregard KeyboardInterrupts, so it'll make
it difficult to interrupt that program in the middle of a Get_int(). I'd
modify it just a little more so that the exception handling isn't so
comprehensive:
###
try:
integer = int(raw_input())
type_check = 1
except ValueError: ## <--- Changed line here
print "Invalid input, try agin. ",
###
ValueError is the exception class that gets raised when we pass silly
things to int():
###
>>> int("foobar")
Traceback (most recent call last):
File "<stdin>", line 1, in ?
ValueError: invalid literal for int(): foobar
###
Hope this helps!
More information about the Tutor
mailing list