鱼C论坛

 找回密码
 立即注册
查看: 1861|回复: 4

[已解决]简单定制

[复制链接]
发表于 2021-4-21 17:27:59 | 显示全部楼层 |阅读模式

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

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

x
  1. import time as t

  2. class Mytimer:
  3.     def __init__(self):
  4.         self.unit = ['年','月','天','小时','分钟','秒']
  5.         self.prompt = '未开始计时'
  6.         self.lasted = []
  7.         self.begin = 0#属性。属性名与方法名与相同,属性覆盖方法
  8.         self.end = 0

  9.    
  10.     def __str__(self):
  11.         return self.prompt
  12.     __repr__ = __str__

  13.     def __add__(self,other):
  14.         prompt = '总共运行了'
  15.         result = []
  16.         for index in range(6):
  17.             result.append(self.lasted[index]+ other.lasted[index])
  18.             if result[index]:
  19.                 prompt += (str(result[index]) + self.unit[index])
  20.         return prompt
  21.     #开始计时
  22.     def start(self):
  23.         self.begin = t.localtime()
  24.         self.prompt = '提示:请先调用stop停止计时'
  25.         print('计时开始...')

  26.     #结束计时
  27.     def stop(self):
  28.         if not self.begin:
  29.             print('提示:请先开始调用start开始计时')
  30.         else:
  31.             self.end = t.localtime()
  32.             self._calc()#调用方法。对象.方法
  33.             print('计时结束...')

  34.     #内部方法,计算运行时间
  35.     def _calc(self):
  36.         self.lasted = []
  37.         self.prompt = '总共运行了'
  38.         for index in range(6):#迭代计算各单位时间
  39.             lasted.append(self.end[index] - self.begin[index])

  40.     def second(lasted):
  41.         if lasted[5] < 0:
  42.             lasted[4] = lasted[4] - 1
  43.             lasted[5] = 60 + lasted[5]
  44.     def minute(lasted):
  45.         if lasted[4] < 0:
  46.             lasted[3] = lasted[3] - 1
  47.             lasted[4] = 60 + lasted[4]
  48.     def hour(lasted):
  49.         if lasted[3] < 0:
  50.             lasted[2] = lasted[2] - 1
  51.             lasted[3] = 24 + lasted[3]
  52.     def day(lasted):
  53.         if lasted[2] < 0:
  54.             lasted[1] = lasted[1] -1
  55.             lasted[2] = 31 + lasted[2]
  56.     def mounth(lasted):
  57.         if lasted[1] < 0:
  58.             lasted[0] = lasted[0] - 1
  59.             lasted[1] = 12 + lasted[1]
  60.             
  61.     def consequence(self):#打印结果
  62.         self.prompt += str(self.lasted[index])


  63.                
  64.         #为下一轮初始化准备
  65.         self.begin = 0
  66.         self.end = 0

  67.         print(self.prompt)
复制代码
哪个大佬帮看看有什么错误没。
最佳答案
2021-4-21 21:32:13
你这是要我的命啊,你这也太乱了 自己瞅瞅吧
  1. import time as t


  2. class Mytimer:
  3.     def __init__(self):
  4.         self.unit = ['年', '月', '天', '小时', '分钟', '秒']
  5.         self.prompt = '未开始计时'
  6.         self.lasted = []
  7.         self.begin = 0  # 属性。属性名与方法名与相同,属性覆盖方法
  8.         self.end = 0

  9.     def __str__(self):
  10.         return self.prompt
  11.     __repr__ = __str__

  12.     def __add__(self, other):
  13.         prompt = '总共运行了'
  14.         result = []
  15.         for index in range(6):
  16.             result.append(self.lasted[index] + other.lasted[index])
  17.             if result[index]:
  18.                 prompt += (str(result[index]) + self.unit[index])
  19.         return prompt

  20.     # 开始计时
  21.     def start(self):
  22.         self.begin = t.localtime()
  23.         self.prompt = '提示:请先调用stop停止计时'
  24.         print('计时开始...')

  25.     # 结束计时
  26.     def stop(self):
  27.         if not self.begin:
  28.             print('提示:请先开始调用start开始计时')
  29.         else:
  30.             self.end = t.localtime()
  31.             self._calc()  # 调用方法。对象.方法
  32.             print('计时结束...')

  33.     # 内部方法,计算运行时间
  34.     def _calc(self):
  35.         self.lasted = []
  36.         self.prompt = '总共运行了'
  37.         for index in range(6):  # 迭代计算各单位时间
  38.             self.lasted.append(self.end[index] - self.begin[index])
  39.         self.second()
  40.         self.minute()
  41.         self.hour()
  42.         self.day()
  43.         self.mounth()

  44.         self.prompt += (str(self.lasted[index])) + self.unit[index]

  45.     def second(self):
  46.         if self.lasted[5] < 0:
  47.             self.lasted[4] = self.lasted[4] - 1
  48.             self.lasted[5] = 60 + self.lasted[5]

  49.     def minute(self):
  50.         if self.lasted[4] < 0:
  51.             self.lasted[3] = self.lasted[3] - 1
  52.             self.lasted[4] = 60 + self.lasted[4]

  53.     def hour(self):
  54.         if self.lasted[3] < 0:
  55.             self.lasted[2] = self.lasted[2] - 1
  56.             self.lasted[3] = 24 + self.lasted[3]

  57.     def day(self):
  58.         if self.lasted[2] < 0:
  59.             self.lasted[1] = self.lasted[1] - 1
  60.             self.lasted[2] = 31 + self.lasted[2]

  61.     def mounth(self):
  62.         if self.lasted[1] < 0:
  63.             self.lasted[0] = self.lasted[0] - 1
  64.             self.lasted[1] = 12 + self.lasted[1]

  65.     def consequence(self):  # 打印结果
  66.         for index in range(0, 6):
  67.             self.prompt += str(self.lasted[index])

  68.         # 为下一轮初始化准备
  69.         self.begin = 0
  70.         self.end = 0

  71.         print(self.prompt)


  72. if __name__ == '__main__':
  73.     timer = Mytimer()
  74.     timer.start()
  75.     t.sleep(2)
  76.     timer.stop()
  77.     print(timer)
复制代码

4.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-4-21 17:59:46 | 显示全部楼层
您自己先运行一下看看行不行
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-21 19:54:48 | 显示全部楼层
本帖最后由 huangdongdong 于 2021-4-21 19:59 编辑

1
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-4-21 19:58:49 | 显示全部楼层
柿子饼同学 发表于 2021-4-21 17:59
您自己先运行一下看看行不行

当我实例化stop是会报错,于是修改成此代码,但依旧会报错,没有思路。。
  1.     #设置计算方法
  2.     def second(lasted):
  3.         if lasted[5] < 0:
  4.             lasted[4] = lasted[4] - 1
  5.             lasted[5] = 60 + lasted[5]
  6.     def minute(lasted):
  7.         if lasted[4] < 0:
  8.             lasted[3] = lasted[3] - 1
  9.             lasted[4] = 60 + lasted[4]
  10.     def hour(lasted):
  11.         if lasted[3] < 0:
  12.             lasted[2] = lasted[2] - 1
  13.             lasted[3] = 24 + lasted[3]
  14.     def day(lasted):
  15.         if lasted[2] < 0:
  16.             lasted[1] = lasted[1] -1
  17.             lasted[2] = 31 + lasted[2]
  18.     def mounth(lasted):
  19.         if lasted[1] < 0:
  20.             lasted[0] = lasted[0] - 1
  21.             lasted[1] = 12 + lasted[1]

  22.     #内部方法,计算运行时间
  23.     def _calc(self):
  24.         self.lasted = []
  25.         self.prompt = '总共运行了'
  26.         for index in range(6):#迭代计算各单位时间
  27.             self.lasted.append(self.end[index] - self.begin[index])
  28.             self.second()
  29.             self.minute()
  30.             self.hour()
  31.             self.day
  32.             self.amounth
  33.             
  34.             self.prompt += (str(self.lasted[index])) + self.unit[index]
复制代码


小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-21 21:32:13 | 显示全部楼层    本楼为最佳答案   
你这是要我的命啊,你这也太乱了 自己瞅瞅吧
  1. import time as t


  2. class Mytimer:
  3.     def __init__(self):
  4.         self.unit = ['年', '月', '天', '小时', '分钟', '秒']
  5.         self.prompt = '未开始计时'
  6.         self.lasted = []
  7.         self.begin = 0  # 属性。属性名与方法名与相同,属性覆盖方法
  8.         self.end = 0

  9.     def __str__(self):
  10.         return self.prompt
  11.     __repr__ = __str__

  12.     def __add__(self, other):
  13.         prompt = '总共运行了'
  14.         result = []
  15.         for index in range(6):
  16.             result.append(self.lasted[index] + other.lasted[index])
  17.             if result[index]:
  18.                 prompt += (str(result[index]) + self.unit[index])
  19.         return prompt

  20.     # 开始计时
  21.     def start(self):
  22.         self.begin = t.localtime()
  23.         self.prompt = '提示:请先调用stop停止计时'
  24.         print('计时开始...')

  25.     # 结束计时
  26.     def stop(self):
  27.         if not self.begin:
  28.             print('提示:请先开始调用start开始计时')
  29.         else:
  30.             self.end = t.localtime()
  31.             self._calc()  # 调用方法。对象.方法
  32.             print('计时结束...')

  33.     # 内部方法,计算运行时间
  34.     def _calc(self):
  35.         self.lasted = []
  36.         self.prompt = '总共运行了'
  37.         for index in range(6):  # 迭代计算各单位时间
  38.             self.lasted.append(self.end[index] - self.begin[index])
  39.         self.second()
  40.         self.minute()
  41.         self.hour()
  42.         self.day()
  43.         self.mounth()

  44.         self.prompt += (str(self.lasted[index])) + self.unit[index]

  45.     def second(self):
  46.         if self.lasted[5] < 0:
  47.             self.lasted[4] = self.lasted[4] - 1
  48.             self.lasted[5] = 60 + self.lasted[5]

  49.     def minute(self):
  50.         if self.lasted[4] < 0:
  51.             self.lasted[3] = self.lasted[3] - 1
  52.             self.lasted[4] = 60 + self.lasted[4]

  53.     def hour(self):
  54.         if self.lasted[3] < 0:
  55.             self.lasted[2] = self.lasted[2] - 1
  56.             self.lasted[3] = 24 + self.lasted[3]

  57.     def day(self):
  58.         if self.lasted[2] < 0:
  59.             self.lasted[1] = self.lasted[1] - 1
  60.             self.lasted[2] = 31 + self.lasted[2]

  61.     def mounth(self):
  62.         if self.lasted[1] < 0:
  63.             self.lasted[0] = self.lasted[0] - 1
  64.             self.lasted[1] = 12 + self.lasted[1]

  65.     def consequence(self):  # 打印结果
  66.         for index in range(0, 6):
  67.             self.prompt += str(self.lasted[index])

  68.         # 为下一轮初始化准备
  69.         self.begin = 0
  70.         self.end = 0

  71.         print(self.prompt)


  72. if __name__ == '__main__':
  73.     timer = Mytimer()
  74.     timer.start()
  75.     t.sleep(2)
  76.     timer.stop()
  77.     print(timer)
复制代码

4.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-12 17:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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