一、著名的斐波拉契数列(Fibonacci),除第一个和第二个数外, 任意一个数都可由前两个数相加得到: 1, 1, 2, 3, 5, 8, 13, 21, 34, ...
#!usr/bin/env python3
#-*-coding=utf-8-*-
#著名的斐波拉契数列(Fibonacci),除第一个和第二个数外,
#任意一个数都可由前两个数相加得到:
#1, 1, 2, 3, 5, 8, 13, 21, 34, ...
def fib(max):
n,a,b = 0,0,1
while n < max:
yield b
a,b= b,a+b
n = n+1
return 'done'
print (fib(6))
二、以斐波那契数列为例,写一个Fib类,可以作用于for循环
#!/usr/bin/env python3
#-*-coding=utf-8-*-
'以斐波那契数列为例,写一个Fib类,可以作用于for循环'
__author__='goukemeng'
class Fib(object):
def __init__(self):
self.a, self.b = 0,1 # 初始化两个计数器a,b
def __iter__(self): # 实例本身就是迭代对象,故返回自己
return self
def __next__(self):
self.a, self.b = self.b, self.a + self.b # 计算下一个值
if self.a > 1000: # 退出循环的条件
raise StopIteration
else:
return self.a # 返回下一个值
for n in Fib():
print(n)