计时器源码

 1 import time as t
 2 
 3 class Mytimer:
 4 
 5     def __init__(self):
 6         self.prompt = '未开始计时'
 7         self.unit = ['','','','','','']
 8         self.begin = 0
 9         self.end = 0
10         self.list=[]#定义列表存储时间差
11 
12     def __str__(self):
13         return self.prompt
14 
15     __repr__ = __str__
16 
17     def __add__(self, other):
18         prompt = '共计用时'
19         for index in range(6):
20             if self.list[index] != 0 or other.list[index] != 0:
21                 prompt += str(int(self.list[index])+ int(other.list[index]))+self.unit[index]
22         return prompt
23         
24 
25     #开始计时
26     def start(self):
27         print('现在开始计时……')
28         self.begin = t.localtime()
29         if self.end == 0:
30             self.prompt = '请先stop()'
31 
32     #停止计时
33     def stop(self):
34         if self.begin == 0:
35             print('请先start()')
36         else:    
37             print('停止计时!')
38             self.end = t.localtime()
39             self._cals()
40 
41     #内部方法计算时间差
42     def _cals(self):
43         
44         self.prompt = '总共运行了'
45         for index in range(6):
46             temp = self.end[index] - self.begin[index]
47             if temp < 0:
48                 #测试高位是否有的借,没有的借的话向再高位借……
49                 i = 1
50                 while self.list[index-i]<1:
51                     self.list[index-i] += self.borrow[index-i] - 1
52                     self.list[index-i-1] -= 1
53                     i += 1       
54                 self.list.append(self.borrow[index]+temp)
55                 self.list[index-1] -= 1
56             else:
57                 self.list.append(temp)
58         #由于高位随时会被借位,因此打印放在最后
59         for index in range(6):
60             if self.list[index]:
61                 self.prompt += str(self.list[index]) + self.unit[index]
62         return self.prompt

 

posted @ 2017-03-01 22:52  道高一尺  阅读(381)  评论(0编辑  收藏  举报