Date: Fri, 10 Sep 2010 20:23:09 +0200
From: [email protected]
To: [email protected]
Subject: Re: [Tutor] exceptions problem
On 10/09/2010 18.12, Roelof Wobben wrote:
> ...
> def readposint():
> x = raw_input("Please enter a positive integer :")
> try:
> if not (x == int(x) and x< 0): raise(ValueError)
> except:
> print x , "is not a positive integer. Try again."
> return False
> return True
>
> y = readposint()
> print y
> while y == False:
> readposint()
> print "You have entered : ", y
>
> But -9 and 2 are both true.
My fault, I didn't notice that after raw_input, whatever you enter is a
STRING, not an integer! So, without any exception thrown, the comparison
x == int(x) is always False. Let's make it better:
if (int(x)<0 or (float(x) - int(x) > 0)): raise(ValueError)
Then, if the input value x is indeed a positive integer, you should
return x, not True or False. Try returning -1 if the exception is
thrown, in line 7, and returning x in line 8. Then, you should change
also line 12... ok, here's to you:
def readposint():
x = raw_input("Please enter a positive integer :")
try:
if (int(x)<0 or (float(x) - int(x) > 0)): raise(ValueError)
except:
print x , "is not a positive integer. Try again."
return -1
return x
y = readposint()
print y
while y == -1:
readposint()
print "You have entered : ", y
>
> Roelof
FrancescoThank you.I never thought that you can use a float and a integer to
look if the number is a integer.Roelof
_______________________________________________ Tutor maillist -
[email protected] To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor
_______________________________________________
Tutor maillist - [email protected]
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor