思路
斐波那契数列,每一项都是前两项的和
定义a为当前项,b为此项与前一项的和即当前项的下一项。
每当next()时,输出当前的a,之后使用a=b ,b =a+b
使用迭代器,15行完成斐波那契数列
class Fibnacci(object): # 创建迭代器
def __init__(self,num):
self.num , self.index , self.a , self.b =num , 0 ,1 ,1 # 指定生成的项数 ,记录下标,初始a,初始b
def __iter__(self):
return self # 使可迭代对象本身也是迭代器
def __next__(self): # 判断下标是否越界
if self.index < self.num: # 计算,保存a的值,下标加一
data , self.a , self.b = self.a , self.b , self.a+self.b
self.index +=1
return data
else: raise StopIteration # 抛出异常
if __name__ == "__main__":
try: fib_iterator = Fibnacci(int(input("请输入Fibnacci数列项数:"))) # 创建迭代器对象
except: print("参数错误!")
for i in fib_iterator: print(i)
使用生成器,10行完成斐波那契数列
def fibonacci(num): # 创建生成器
a , b , index = 1 ,1 ,0 # 初始a,初始b,记录下标
while index < num: # 判断下标是否越界
data , a , b = a , b , a+b # 计算,保存a的值
index +=1 # 下标加一
yield data
if __name__ == "__main__":
try: fib = fibonacci(int(input("请输入Fibonacci数列项数:"))) # 创建生成器对象
except: print("参数错误!")
for i in fib: print(i)