您的位置:首页 > 编程语言 > Python开发

《Python核心编程》第二版第407页第十三章练习 续四 -Python核心编程答案-自己做的-

2012-09-16 11:13 671 查看
这是自己做的练习,可能有错误,欢迎讨论和各种优化重构方案。
根据反馈,或者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 time
from time import sleep

timeValue = 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

【未完】

附加题没有做。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐