在 Python 中循环斐波那契数列

Looping the Fibbonacci Sequence in Python

我正在 Python 2.7.6 中编写一个程序来计算斐波那契数列(1、1、2、3、5、8 等)。这是代码(到目前为止):

x = int(input("Enter a number: "))
y = int(input("Enter the number that comes before it:"))
z = x + y
a = z + x
b = a + z
c = b + a
d = c + b
e = d + c
f = e + d
g = f + e
print x, z, a, b, c, d, e, f, g

有没有一种方法可以使过程循环,这样我就不必一直输入 f=e+d 和其他内容?

当然,只需使用某种形式的循环。例如,如果您想列出 x 之后的前 11 个斐波那契数列:

fiblist = [x]
for _ in range(10):
    z = x + y
    fiblist.append(z)
    x, y = z, x
print(fiblist)

(或者使用循环而不是单一的 print 来改变输出的外观——与你的核心 Q 无关)。

出于不同的目的(例如 "list all numbers in the sequence until the first one above 100"),您可以轻松调整循环(例如使用 while x <= 100: 代替 for)。

您可以编写一个循环或只使用 Python 中的内置 reduce 函数。

    fib = lambda n: reduce(lambda x, y: x+[x[-1]+x[-2]],range(n-2), [0, 1])