[Tutor] exceptions problem
bob gailer
bgailer at gmail.com
Sat Sep 11 01:56:41 CEST 2010
On 9/10/2010 2:48 PM, Roelof Wobben wrote:
>
>
> Date: Fri, 10 Sep 2010 20:23:09 +0200
> From: fal at libero.it
> To: tutor at python.org
> 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
> Francesco
> Thank you.
> I never thought that you can use a float and a integer to look if the number is a integer.
You can't.
--
Bob Gailer
919-636-4239
Chapel Hill NC
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tutor/attachments/20100910/6ced123f/attachment-0001.html>
More information about the Tutor
mailing list