[Tutor] Why can't I make this function work?
Alan Gauld
alan.gauld at blueyonder.co.uk
Mon Jul 19 23:47:51 CEST 2004
> def Get_int():
> "Function to collect an integer from the user"
> type_check = 0
> while type_check == 0:
> int = raw_input()
> if type(int) != type(1):
> print "Invalid input"
> else:
> type_check = 1
> return int
Its usually a bad idea to use a Python builtin name as a variable.
int is the function for converting to an integer. Thisis particularly
unfortunate here because you need it to convert your raw_input string
to an integer! - Thats why the type test keeps failing....
However a more Pythonic way to do this is probably via an
exception:
def getInt():
while True:
try: num = int(raw_input())
except TypeError: continue
return num
That will of course work for floats (which will be converted to ints,
so it might not be exactly what you want. But a simple test before the
conversion would fix that.
def getInt():
while True:
try:
num = raw_input()
if '.' in num: continue
else num = int(num)
except TypeError: continue
return num
HTH,
Alan G.
More information about the Tutor
mailing list