David wrote:
David wrote:
Hi,
Is this the correct way to handle a ValueError exception and should I
get in the practice of catching them?
Well yes and no.
I think it is better to use the string method isdigit to test for digits
only.
Also IMHO it is bad design to put a lot of code inside a try block. In
this case the user might make a mistake on day and then is forced to
reenter the year and month!
Better to write a function for requesting an integer from the user which
loops until the user gets it right (with some way to escape if he gets
frustrated and just wants to quit.
Also any suggestions on the program.
thanks
-david
Might help if I included the program :)
#!/usr/bin/python
import time
print "Enter year as 0000"
print "Enter month and day as 00"
while True:
try:
yr = int(raw_input("What year were you born? "))
mn = int(raw_input("What month were you born? "))
dy = int(raw_input("What day were you born? "))
curr_date = time.strftime("%Y %m %d", time.gmtime())
ynum = int(time.strftime("%Y", time.gmtime())) - int(yr)
mnum = int(time.strftime("%m", time.gmtime()))
dnum = int(time.strftime("%d", time.gmtime()))
mn = int(mn)
dy = int(dy)
if mn - mnum:
print "You are %i" % ynum, "years old."
break
elif mn == mnum and dy < dnum:
print "You are %i" % ynum, "years old."
break
else:
ret = int(ynum) - 1
print "You are %i" % ret, "years old."
break
except ValueError:
print "Oops, You must enter a number!"
--
Bob Gailer
Chapel Hill NC
919-636-4239
_______________________________________________
Tutor maillist - Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor