這是自己做的練習,可能有錯誤,歡迎討論和各種最佳化重構方案。
根據反饋,或者code review,對本篇文章答案或者相關內容的更新補充,一般會被添加在本篇部落格的評論中。
盡量保證每題的答案代碼是完整的,不僅僅是函數或者類,開啟Python 2.7的IDLE,將代碼完整拷貝進去,就能調試運行。
13-7.
資料類。提供一個time模組的介面,允許使用者按照自己給定時間的格式,比如:“MM/DD/YY”、“MM/DD/YYYY”、“DD/MM/YY”、“DD/MM/YYYY”、“Mon DD, YYYY”或是標準的Unix日期格式“Day Mon DD, HH:MM:SS YYYY”來查看日期。你的類應該維護一個日期值,並用給定的時間建立一個執行個體。如果沒有給出時間值,程式執行時會預設採用當前的系統時間。還包括另外一些方法。
update() 按照給定時間或是預設的當前系統時間修改資料值
display() 以代表時間格式的字串做參數,並按照給定時間的格式顯示:
'MDY' -> MM/DD/YY
'MDYY'-> MM/DD/YYYY
'DMY' -> DD/MM/YY
'DMYY' -> DD/MM/YYYY
'MODYY' -> Mon DD, YYYY
如果沒有提供任何時間格式,預設使用系統時間或ctime()的格式。附加題:把這個類和練習6-15結合起來。
【答案】
代碼如下:
class MyTime(object): 'My Time Class for Ex 13-7' def __init__(self, timeValue, timeString): self.timeValue = timeValue self.timeString = timeString def update(self, timeValue, timeString): self.timeValue = timeValue self.timeString = timeString print 'Time updated success.\n' def display(self, displaytype): day = self.timeValue.tm_mday if day <= 9: day2 = '0' + str(day) else: day2 = str(day) months = self.timeValue.tm_mon if months <= 9: months2 = '0' + str(months) else: months2 = str(months) year = self.timeValue.tm_year year2 = str(year)[2:] year4 = str(year) timeStringSplit = self.timeString.split() if displaytype == 'MDY': return months2 + '/' + day2 + '/' + year2 elif displaytype == 'MDYY': return months2 + '/' + day2 + '/' + year4 elif displaytype == 'DMYY': return day2 + '/' + months2 + '/' + year2 elif displaytype == 'DMY': return day2 + '/' + months2 + '/' + year4 elif displaytype == 'MODYY': return timeStringSplit[0] + ' ' + timeStringSplit[2] + ', ' + timeStringSplit[4] else: return self.timeString import timefrom time import sleeptimeValue = time.localtime(time.time())timeString = time.ctime(time.time())print 'Current time and date is: ', timeString, '\n'CurrentTime = MyTime(timeValue, timeString)sleep(3)timeValue = time.localtime(time.time())timeString = time.ctime(time.time())CurrentTime.update(timeValue, timeString)print "'MDY' -> MM/DD/YY ...... ", CurrentTime.display('MDY')print "'MDYY' -> MM/DD/YYYY .... ", CurrentTime.display('MDYY')print "'DMY' -> DD/MM/YY ...... ", CurrentTime.display('DMY')print "'DMYY' -> DD/MM/YYYY .... ", CurrentTime.display('DMYY')print "'MODYY' -> Mon DD,YYYY ... ", CurrentTime.display('MODYY')print "Nothing Defined .......... ", CurrentTime.display('NothingDefined')
【執行結果】
Current time and date is: Fri Sep 14 10:40:47 2012
# http://www.cnblogs.com/balian
Time updated success.
'MDY' -> MM/DD/YY ...... 09/14/12
'MDYY' -> MM/DD/YYYY .... 09/14/2012
'DMY' -> DD/MM/YY ...... 14/09/2012
'DMYY' -> DD/MM/YYYY .... 14/09/12
'MODYY' -> Mon DD,YYYY ... Fri 14, 2012
Nothing Defined .......... Fri Sep 14 10:40:50 2012
【未完】
附加題沒有做。