鱼C论坛

 找回密码
 立即注册
查看: 2191|回复: 0

[技术交流] 章节十一:简单定制

[复制链接]
发表于 2017-8-23 21:22:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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
运行结果如下
1.png




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

运行结果如下
2.png

评分

参与人数 1鱼币 +5 收起 理由
小甲鱼 + 5

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 11:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表