bud 发表于 2020-12-11 17:31:13

代码有什么问题

给我报这个错,是代码哪里有问题“
Traceback (most recent call last):
File "<pyshell#11>", line 1, in <module>
    t1.stop()
File "C:\Users\Administrator.SD-20190304TZGG\Desktop\timer.py", line 32, in stop
    self._calc()
File "C:\Users\Administrator.SD-20190304TZGG\Desktop\timer.py", line 39, in _calc
    self.lasted.append(self.end-self.begin)
TypeError: 'int' object is not subscriptable



以下是代码:


import time as t

class MyTimer():
    def __init__(self):
      self.unit=['年','月','天','小时','分钟','秒']
      self.prompt='未开始计时'
      self.lasted=[]
      self.begin=0 #为什么last是一个数组,而begin 和end 是整数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.last+other.lasted)
            
   
    #开始计时
    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-self.begin)
            if self.lasted:
                self.prompt+=(str(self.last)+self.unit)
                                    
            #为下一轮计时初始化变量:
            self.begin=0
            self.end=0
                        

sunrise085 发表于 2020-12-11 18:19:12

_calc 方法的最后两行的缩进不对,应该是和for一个层次,而不是for内的程序。在for循环结束后才将begin和end清零

bud 发表于 2020-12-14 15:05:16

sunrise085 发表于 2020-12-11 18:19
_calc 方法的最后两行的缩进不对,应该是和for一个层次,而不是for内的程序。在for循环结束后才将begin和en ...

果然,谢谢!

sunrise085 发表于 2020-12-15 12:30:39

bud 发表于 2020-12-14 15:05
果然,谢谢!

问题解决了,就给评个最佳答案呗
页: [1]
查看完整版本: 代码有什么问题