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

Reply via email to