鱼C论坛

 找回密码
 立即注册
查看: 716|回复: 2

第44课后习题

[复制链接]
发表于 2018-7-28 06:06:37 | 显示全部楼层 |阅读模式

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

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

x
import time as t
class MyTimer():
    def __init__(self):
        self.prompt = '未开始计时'
        self.lasted = 0.0
        self.begin = 0
        self.end = 0
        self.default_timer = t.perf_counter()
    def __str__(self):
        return self.prompt
    __repr__ = __str__
    #开始计时
    def start(self):
        self.begin = self.default_timer
        self.prompt = '提示请先调用stop()停止计时'
        print('计时开始')
    #结束计时
    def stop(self):
        if not self.begin:
            print('请先调用start()')
        else:
            self.end = self.default_timer
            self._calc()
            print('计时结束')
    #内部计算时间差
    def _calc(self):
        self.lasted = self.end-self.begin
        self.prompt = '总共运行了%.2f'%self.lasted
        #为下一轮计时初始化变量
        self.begin = 0
        self.end = 0
##这段代码执行的结果一直时
>> t1 =MyTimer()
>>> t1.start()
计时开始
>>> t1.stop()
计时结束
>>> t1
总共运行了0.00但是在self.default_timer = t.perf_counter()变成self.default_timer = t.perf_counter  相应的在后面调用这个时加上()就行了 这是为啥啊
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-7-28 11:07:08 | 显示全部楼层
init 里self.default_timer = t.perf_counter传入函数接口
在start和stop里self.default_timer(),运行定时器函数
定时器函数运行2次可得到结果
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-28 23:13:41 | 显示全部楼层
您的代码错误,所以一直回传 self.lasted = 0

self.default_timer = t.perf_counter()
self.begin = self.default_timer
self.end = self.default_timer
self.lasted = self.end - self.begin

您这样写将会是让 self.begin 与 self.end 指向同一个记忆体位置,也就是 self.default_timer。所以它们俩相减是保证为零。

修改:

def __init__(self):
    self.default_timer = t.perf_counter()   # 删除

def start(self):
    self. begin = t.perf_counter()  # 修改

def end(self):
    self.end = t.perf_counter()   #修改

这样就保证说 self.begin 与 self.end 不是指向同一个资料,相减之后才不等于零
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-1 01:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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