问题:斐波那契数列是由 0, 1, 1, 2, 3, 5, 8…构成。请编写一个Fib类,Fib(10)表示数列的前10个元素,print Fib(10) 可以打印出数列的前 10 个元素,len(Fib(10))可以正确返回数列的个数10。
程序:
class Fib:
def __init__(self,n):
if n == 1:
self.a = [0]
if n == 2:
self.a = [0, 1]
if n > 2:
self.a = [0, 1]
for i in range(2, n):
self.a.append(self.a[i-2] + self.a[i-1])
def __len__(self):
return len(self.a)
def __str__(self):
b=''
for i in self.a:
b += str(i)+'\n'
return b.rstrip('\n')
__repr__ = __str__
创建一个类的实例看看行不行:
上面的Fib类程序保存在Fib.py,所在根目录为:C:\Users\15011\Desktop。在Python命令解释器中运行下面内容:
>>> import os
>>> os.chdir(r'C:\Users\15011\Desktop') # 切换到程序所在的目录
>>> from Fib import Fib # 从文件中导入Fib类
>>> f = Fib(10)
>>> f
0
1
1
2
3
5
8
13
21
34
>>> print(f)
0
1
1
2
3
5
8
13
21
34
>>> len(f)
10
评价:
自我感觉自己写的Fib.py程序有点笨重,但是斐波那契数列问题本身不是很难,就不去优化了,抱歉。
END