"David" <da...@abbottdavid.com> wrote

Is this the correct way to handle a ValueError exception and should I get in the practice of catching them?

Yes and Yes.

Although I woulfd move the except clause up to just after the input section
(which is where the errors will be raised). A couple of other comments
below:

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)

Put the except here, its easier to see where the error came from.
And since the error message only applies to these int() calls its
more accurate.

        if mn - mnum:
            print "You are %i" % ynum, "years old."

This is an odd use of string formatting, more usually you
would only use one string:

            print "You are %i years old" % ynum

Either that or just insert the value and not use formattting:

            print "You are", ynum, "years old."

        else:
            ret = int(ynum) - 1

You don't need the int conversion here since yuou already
did it at the input stage. But...

            print "You are %i" % ret, "years old."

Why not just

       print "You are %i" % ynum-1, "years old."

HTH,

--
Alan Gauld
Author of the Learn to Program web site
http://www.freenetpages.co.uk/hp/alan.gauld

_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to