Hey,

I'm working on a problem out of Core Python Programming (2nd Edition).  
Basically, I'm creating a class that formats dates.  Here is what I have so far:

#!/usr/bin/python

import time

class date_format(object):
        def __init__(self, month, day, year):
                month_dict = {("jan","january") : 1,
                              ("feb","february") :2,
                              ("mar", "march") : 3,
                              ("apr", "april") : 4,
                              ("may") : 5,
                              ("jun", "june") : 6,
                              ("jul", "july") : 7,
                              ("aug", "august") : 8,
                              ("sep", "september") : 9,
                              ("oct", "october"): 10,
                              ("nov", "november"): 11,
                              ("dec", "december"): 12
                              }
                try:
                        month = int(month)
                except ValueError:
                        for eachKey in month_dict.keys():
                                if month.lower() in eachKey:
                                        month = month_dict[eachKey]
                                else:
                                        month = ""
                if month=="" or day=="" or year=="":
                        self.date =  time.localtime()
                else:
                        self.date = (int(year), month, int(day), 0, 0, 0, 0, 1, 
-1)
        
        def display(self, format_indicator = None):
                if format_indicator == 'MDY':
                        print time.strftime("%m/%d/%y",self.date)
                elif format_indicator == 'MDYY':
                        print time.strftime("%m/%d/%Y",self.date)
                elif format_indicator == 'DMY':
                        print time.strftime("%d/%m/%y",self.date)
                elif format_indicator == 'DMYY':
                        print time.strftime("%d/%m/%Y",self.date)
                elif format_indicator == 'MODYY':
                        print time.strftime("%b %d, %Y",self.date)
                else:
                        print time.strftime("%a %b %d %Y",self.date)
                
                        
if __name__ == "__main__":
        print "Welcome to the Date Formatter!"
        month = raw_input("Please enter a month: ")
        day = raw_input("Please enter a day: ")
        year = raw_input("Please enter a year: ")
        date_obj = date_format(month, day, year)
        format_indicator = raw_input("Enter a format indicator: ")
        date_obj.display(format_indicator.upper())

I am having trouble dealing with the case where the user actually types in a 
month's name instead of the number:
[EMAIL PROTECTED] ./chap13 180> python date_format_v01.py

Welcome to the Date Formatter!
Please enter a month (as a number): Oct
Please enter a day: 31
Please enter a year: 1976
Traceback (most recent call last):
  File "date_format_v01.py", line 53, in ?
    date_obj = date_format(month, day, year)
  File "date_format_v01.py", line 24, in __init__
    if month.lower() in eachKey:
AttributeError: 'int' object has no attribute 'lower'

Any suggestions?
-Chris


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

Reply via email to