Discuss / Python / 用getitem实现斐波那契

用getitem实现斐波那契

代码有以下几个问题: 1,不能实现切片的start缺省,即 m=fib() print(m[:3]) 会报错 2,好像a,b定义时无效, 3,实现m[3:9:2]的step的时候有错误 求解决

def __getitem__(self,n):

        if isinstance(n, int):
            a, b =5, 1   #为什么这边的a 好像没有用到   
            for x in range(n+1):
                a, b= b, a+b
            return a
        if isinstance(n,slice):

            start=n.start
            end=n.stop
            step=n.step

            l=[]
            a,b=1,1
            count=0
            for x in range(end):
                while count<step:
                    a, b= b, a+b
                    count=count+1
                    print('count is %s now' % count)
                    print('a:%s b:%s' %(a,b))
                if x >= start:
                    l.append(a)

            return l

@廖雪峰


  • 1

Reply