马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 向西而笑 于 2017-8-24 16:54 编辑
课时44:简单定制
这节课主要定制一个关于计时器的类
基本要求:
1、 定制一个计时器的类;
2、start和stop方法代表启动计时和停止计时;
3、假设计时器对象t1,print(t1)和直接调用t1均显示结果;
4、当计时器未启动或已经停止计时,调用stop方法会给予温馨的提示;
5、两个计时器对象可以进行相加:t1 + t2;
6、只能使用提供的有限资源完成。
需要的资源:
1、 使用tiem模块的localtime方法获取时间;
2、time.localtime返回struct_time的时间格式
3、表现你的类:__str__和__repr__
1、自己先动手尝试的版本import time as t
class MyTimer():
def __init__(self):
self.start_time = False #没有开始计时
self.end_time = False #结束计时不存在
#开始计时
def start(self):
print('计时开始...')
self.start_time = t.time()#返回开始计时的时间戳
#停止计时
def stop (self):
if not self.start_time: #判断计时有没有开始
print('【提示】...请开始计时...')
else:
self.end_time = t.time() #返回结束计时的时间戳
self.total_time = (self.end_time - self.start_time) #计算总运行秒数
print('计时结束...')
def __str__(self):
if not self.end_time:#判断计时有没有结束
return '【提示】...请停止计时...'
else:
return '运行了%.6f秒'%self.total_time
__repr__ = __str__ #代码一样就直接赋值
def __add__(self,other):
return self.total_time + other.total_time
def __sub__(self,other):
return self.total_time - other.total_time
运行结果如下
2、小甲鱼老师的版本
import time as t
class Mytimer():
def __init__(self):
self.unit = ['年','月','天','小时','分钟','秒']
self.prompt = "尚未开始计时!" #温馨提示
self.lasted = []
self.begin = 0
self.end = 0
def __str__(self):
return self.prompt
__repr__ = __str__
def __add__(self,other):
prompt = '总共运行了'
result = []
for index in range(6):
result.append(self.lasted[index] + other.lasted[index])
if result[index]:
prompt += (str(result[index]) + self.unit[index])
return prompt
#开始计时
def start(self):
self.begin = t.localtime()
self.prompt = '提示,请先调用stop()停止计时!'
print('计时开始...')
#停止计时
def stop(self):
if not self.begin:
print('提示:请先调用start()进行计时!')
else:
self.end = t.localtime()
self._calc()
print('计时结束!')
#内部方法,计算运行时间
def _calc(self):
self.lasted = []
self.prompt = '总共运行了'
for index in range(6):
self.lasted.append(self.end[index] - self.begin[index])
if self.lasted[index]:
self.prompt += (str(self.lasted[index]) + self.unit[index])
#为下一轮计时初始化变量
self.begin = 0
self.end = 0
运行结果如下
|