On 9/10/2010 2:48 PM, Roelof Wobben wrote:


Date: Fri, 10 Sep 2010 20:23:09 +0200
From: f...@libero.it
To: tutor@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

_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to