码迷,mamicode.com
首页 > 其他好文 > 详细

斐波拉契数列

时间:2017-12-04 00:14:40      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:done   url   turn   基本   必须   tle   top   ram   break   

生成器:斐波拉契数列

参考廖雪峰的url:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014317799226173f45ce40636141b6abc8424e12b5fb27000#0
def fib(max): n, a, b = 0, 0, 1 while n < max: yield b a, b = b, a + b n = n + 1 return ‘done‘

把函数改成generator后,我们基本上从来不会用next()来获取下一个返回值,而是直接使用for循环来迭代:
>>> for n in fib(6):
... print(n)

但是用for循环调用generator时,发现拿不到generator的return语句的返回值。如果想要拿到返回值,必须捕获StopIteration错误,返回值包含在StopIterationvalue中:

>>> g = fib(6)
>>> while True:
...     try:
...         x = next(g)
...         print(‘g:‘, x)
...     except StopIteration as e:
...         print(‘Generator return value:‘, e.value)
...         break
...
g: 1
g: 1
g: 2
g: 3
g: 5
g: 8
Generator return value: done

斐波拉契数列

标签:done   url   turn   基本   必须   tle   top   ram   break   

原文地址:http://www.cnblogs.com/hzchh/p/7967757.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!