“”“生成器实现斐波那契数列”""
#著名的斐波拉契数列(Fibonacci),除第一个和第二个数外,任意一个数都可由前两个数相加得到:
# 1, 1, 2, 3, 5, 8, 13, 21, 34, ...
#斐波拉契数列用列表生成式写不出来,但是,用函数把它打印出来却很容
def fbnq(num):
a=0
b=1
current_index=0 #当前下标
while current_index<num:
result= a
a,b =b,a+b
current_index+=1
#程序遇到yield返回值之后会暂停,下次执行时会从这里开始,当后面遇到return时会立即结束迭代
yield result #一个函数中出现yield,则说明该函数是生成器
# return "haha"
if __name__ == '__main__':
ret=fbnq(3)
while True:
try:
ret1=next(ret)
print(ret1)
except StopIteration as e:
print(e.value)
#
# print(next(ret))
# print(next(ret))
# print(next(ret))
#溢出报错
# print(next(ret))
# for i in ret:
# print(i)