使用协程找前10个斐波那契数列
时间: 2023-08-07 14:38:56 浏览: 122
好的,这里是使用协程找前10个斐波那契数列的 Python 代码:
```python
def fibonacci():
a, b = 0, 1
while True:
yield a
a, b = b, a + b
def take(n, seq):
result = []
for i in range(n):
result.append(next(seq))
return result
def coroutine(f):
def wrapper(*args, **kwargs):
generator = f(*args, **kwargs)
next(generator)
return generator
return wrapper
@coroutine
def printer():
count = 0
while True:
value = yield
print(value)
count += 1
if count >= 10:
break
@coroutine
def fibonacci_printer():
seq = fibonacci()
while True:
take_result = take(10, seq)
for value in take_result:
printer.send(value)
if len(take_result) < 10:
break
fibonacci_printer()
```
这段代码定义了一个生成器 `fibonacci`,用于生成斐波那契数列。同时定义了一个 `take` 函数,用于从生成器中取出指定数量的值。
然后定义了两个协程 `printer` 和 `fibonacci_printer`。`printer` 协程用于打印值,而 `fibonacci_printer` 协程用于生成前10个斐波那契数列,并将其发送给 `printer` 协程进行打印。
最后,执行 `fibonacci_printer` 协程即可输出前10个斐波那契数列。
阅读全文