【发布时间】:2018-02-28 00:12:37
【问题描述】:
我是 python 编程的新手,我正在尝试基于生成器编写 fib。我试过这个:
def fib(n):
a = 0
b = 1
for _ in range(n):
yield a
print(a)
a, b = b, a + b
print((a,b))
还有这个:
def fib(n):
a = 0
b = 1
for _ in range(n):
yield a
a = b
b = a + b
print(list(fib(a)))
结果不一样,为什么会这样?
【问题讨论】:
-
把这两种情况的步骤写在纸上,你就会明白为什么了。您在使用之前覆盖了 a 的值。
-
您的缩进没有意义。请修复。