我下何从 发表于 2020-5-26 13:24:40

44讲,魔法方法:简单定制的d0,时间相减得负值,大神求助!

本帖最后由 我下何从 于 2020-5-26 14:01 编辑

import time as t                                                            在借位那里自己写的,就是出错。。。但是不知道为啥出错,小白求助
class MyTimer():
    def __init__(self):
            self.unit=['年','月','日','时','分','秒']
            self.prompt="未开始计时"
            self.lasted=[]
            self.begin=0
            self.end=0
      

    def __repr__(self):
      return self.prompt         
   
    def start(self):
      self.begin=t.localtime()
      self.prompt= "请先调用stop停止计时"
      print("计时开始:")

   
    #停止计时
    def stop(self):
      if not self.begin:
            print('请先计时')
      else:
            self.end=t.localtime()
            self._calc()
            print("计时结束")

    #计算计时时间
    def _calc(self):
      self.listed=[]
      self.prompt='总共运行了'
      for index in range(6):
            self.listed.append((self.end-self.begin))
            if self.listed<0:
                  #秒:
                  if self.unit in self.unit:                                          #索引值每个确定,当相减的后者为负值的时候,向前借一位
                        self.listed-=1                                                      #按我的想法是,即使前面那位是0,被借了变成-1,也可以在下次循环再往前补回来,但是结果却不行,问问为啥啊...
                        self.listed=60+self.listed
                  #分:
                  elif self.unit == self.unit:
                        self.listed-=1
                        self.listed=60+self.listed
                  #时:
                  elif self.unit == self.unit:
                        self.listed-=1
                        self.listed=24+self.listed
                  #日:
                  elif self.unit == self.unit:
                        self.listed-=1
                        self.listed=31+self.listed
                  #月:
                  elif self.unit == self.unit:
                        self.listed-=1
                        self.listed=12+self.listed
      for index in range(6):
            if self.lasted>0:
                  self.prompt += str(self.lasted) + self.unit

Twilight6 发表于 2020-5-26 13:27:52

    def __add__(self, other):
      propmt = '总共运行了'
      result = []
      for index in range(6):
            result.append(self.lasted + other.lasted)
            if result:
                prompt += (str(result) + self.unit)
      return prompt
你忘记加self 了


import time as t

class MyTimer():
    def __init__(self):
      self.unit = ['年', '月', '日', '时', '分', '秒']
      self.prompt = "未开始计时"
      self.lasted = []
      self.begin = 0
      self.end = 0

    def __repr__(self):
      return self.prompt

    def __add__(self, other):
      propmt = '总共运行了'
      result = []
      for index in range(6):
            result.append(self.lasted + other.lasted)
            if result:
                self.prompt += (str(result) + self.unit)
      return self.prompt

    def start(self):
      self.begin = t.localtime()
      self.prompt = "请先调用stop停止计时"
      print("计时开始:")

    # 停止计时
    def stop(self):
      if not self.begin:
            print('请先计时')
      else:
            self.end = t.localtime()
            self._calc()
            print("计时结束")

    # 计算计时时间
    def _calc(self):
      self.listed = []
      self.prompt = '总共运行了'
      for index in range(6):
            self.listed.append((self.end - self.begin))
            if self.listed < 0:
                # 秒:
                if self.unit in self.unit:# 索引值每个确定,当相减的后者为负值的时候,向前借一位
                  self.listed -= 1# 按我的想法是,即使前面那位是0,被借了变成-1,也可以在下次循环再往前补回来,但是结果却不行,问问为啥啊...
                  self.listed = 60 + self.listed
                # 分:
                elif self.unit == self.unit:
                  self.listed -= 1
                  self.listed = 60 + self.listed
                # 时:
                elif self.unit == self.unit:
                  self.listed -= 1
                  self.listed = 24 + self.listed
                # 日:
                elif self.unit == self.unit:
                  self.listed -= 1
                  self.listed = 31 + self.listed
                # 月:
                elif self.unit == self.unit:
                  self.listed -= 1
                  self.listed = 12 + self.listed
      for index in range(6):
            if self.lasted > 0:
                self.prompt += str(self.lasted) + self.unit

我下何从 发表于 2020-5-26 13:59:07

Twilight6 发表于 2020-5-26 13:27


emmm其实问题不在这里,我并没有调用这个+,就是单纯那个借位的问题

Twilight6 发表于 2020-5-26 14:15:32

我下何从 发表于 2020-5-26 13:59
emmm其实问题不在这里,我并没有调用这个+,就是单纯那个借位的问题

嗯我知道问题不在那 可是那边如果没改 你下次运行也会出错 只是现在是被索引给先出错了

代码太多了 看头疼,不是自己写的思路没那么清晰 所以可能来看的人比较少

我下何从 发表于 2020-5-26 14:18:25

Twilight6 发表于 2020-5-26 14:15
嗯我知道问题不在那 可是那边如果没改 你下次运行也会出错 只是现在是被索引给先出错了

代码太多 ...

嗯嗯,其实这道题前面的代码我基本没动,就是那个借位那里我和标准答案有点不同, 就是不太理解我借位为啥除了问题,老哥你在做这题的时候怎么做的呢?

Twilight6 发表于 2020-5-26 14:19:16

本帖最后由 Twilight6 于 2020-5-26 14:25 编辑

我下何从 发表于 2020-5-26 14:18
嗯嗯,其实这道题前面的代码我基本没动,就是那个借位那里我和标准答案有点不同, 就是不太理解我借位为 ...

def __calc(self):
      self.prompt = '总共运行时间为'
      for index in range(6):
            judge = self.end - self.begin
            if judge < 0 :
                new_lasted = self.ary + judge
                self.lasted.append(new_lasted)
                if index >= 1 :
                  self.lasted.insert(index-1,self.lasted-1)
                  self.lasted.pop(index)
            else:
                self.lasted.append(judge)
      for index in range(6):
            if self.lasted:
                self.prompt += (str(self.lasted) + self.unit)
      # 初始化变量,便于下一次的计时
      self.begin = 0
      self.end = 0

我下何从 发表于 2020-5-26 14:38:14

Twilight6 发表于 2020-5-26 14:19


老哥我想问下,标准答案里self.lasted=[] 这里是是空列表为什么下面借位的时候可以直接   while self.lasted < 1:      这样子不会报错吗?在不存在值的列表里进行索引,在这while之后才会输入值给列表呀
                                                                                 

Twilight6 发表于 2020-5-26 14:41:47

我下何从 发表于 2020-5-26 14:38
老哥我想问下,标准答案里self.lasted=[] 这里是是空列表为什么下面借位的时候可以直接   while self.l ...

因为刚刚开始的时候 temp 不可能 < 0 会先执行else 里面的代码块哦~~

我下何从 发表于 2020-5-26 14:45:04

Twilight6 发表于 2020-5-26 14:41
因为刚刚开始的时候 temp 不可能 < 0 会先执行else 里面的代码块哦~~

老哥,你学python多久了啊,学了二十多天的我感觉除了简单一点的题会做,其他基本都有看答案,而隐约觉得前面的题让现在的我来做,即使当时我想了很久也会做了,现在也不一定会做,有点打击信心啊

Twilight6 发表于 2020-5-26 14:46:18

我下何从 发表于 2020-5-26 14:45
老哥,你学python多久了啊,学了二十多天的我感觉除了简单一点的题会做,其他基本都有看答案,而隐约觉得 ...

我这题当时也卡了好久呢,几个小时不停改,有的时候改半天还回到原点....

我注册时间就是开始学Python 的时间嘿嘿

我下何从 发表于 2020-5-26 14:48:10

Twilight6 发表于 2020-5-26 14:46
我这题当时也卡了好久呢,几个小时不停改,有的时候改半天还回到原点....

我注册时间就是开始学Python ...

那你现在python不是就是基本学完了呀

Twilight6 发表于 2020-5-26 14:49:43

我下何从 发表于 2020-5-26 14:48
那你现在python不是就是基本学完了呀

没   学到80课时就没继续看了 最近准备学下数据可视化

我下何从 发表于 2020-5-26 14:50:29

Twilight6 发表于 2020-5-26 14:49
没   学到80课时就没继续看了 最近准备学下数据可视化

噢噢,这样子

我下何从 发表于 2020-5-26 14:56:26

Twilight6 发表于 2020-5-26 14:49
没   学到80课时就没继续看了 最近准备学下数据可视化

老哥能加个QQ吗,有些学python的疑惑想问一波
页: [1]
查看完整版本: 44讲,魔法方法:简单定制的d0,时间相减得负值,大神求助!