为了账号安全,请及时绑定邮箱和手机立即绑定

感觉自己写的代码还不错

class Fib(object):

    def __init__(self, num):

        self.num = num

        self.count = 0

    def __str__(self):

        a,b,c = 0,0,1

        n = self.num

        s = '['

        while n:

            s +=str(b)+','

            a,b = b,c

            c = a+b

            self.count+=1

            n-=1

        s = s[:-1]+']'

        return s 

    def __len__(self):

        return self.count

f = Fib(10)

print f

print len(f)

正在回答

5 回答

后续还有更简单写法

class Fib(object):

    def __call__(self,num):

        a, b, L = 0, 1, []

        for n in range(num):

            L.append(a)

            a, b = b, a + b

        return L


f = Fib()

print f(10)


1 回复 有任何疑惑可以回复我~
#1

木易楊__ 提问者

厉害,厉害。
2018-07-20 回复 有任何疑惑可以回复我~

传说中的拼接大法  佛了

0 回复 有任何疑惑可以回复我~

class Fib(object):


    def __init__(self, num):

        fib = []

        if num == 1:

            fib.append(0)

        elif num == 2:

            fib.append(0)

            fib.append(1)

        else:

            fib.append(0)

            fib.append(1)

            i = 2

            while (num-2) > 0:

                fib.append(fib[i-2]+fib[i-1])

                i = i+1

                num-=1

        self.numbers = fib

        

    def __str__(self):

        return str(self.numbers)

    

    def __len__(self):

        return len(self.numbers)


f = Fib(10)

print f

print len(f)


1 回复 有任何疑惑可以回复我~

self.numbers = L 这是干啥

0 回复 有任何疑惑可以回复我~

干嘛都这么麻烦 按老师的要求做不好吗

https://img1.sycdn.imooc.com//5b5dce18000116e009280664.jpg


1 回复 有任何疑惑可以回复我~
#1

木易楊__ 提问者

每个人都每个人的解法,每个人都一样了有什么意思
2018-07-30 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
python进阶
  • 参与学习       255665    人
  • 解答问题       2949    个

学习函数式、模块和面向对象编程,掌握Python高级程序设计

进入课程

感觉自己写的代码还不错

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信