《Python核心編程》第二版第407頁第十三章練習 續四 -Python核心編程答案-自己做的-

來源:互聯網
上載者:User

這是自己做的練習,可能有錯誤,歡迎討論和各種最佳化重構方案。
根據反饋,或者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

【未完】

附加題沒有做。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.