|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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
复制代码
运行结果如下
|
评分
-
查看全部评分
|