在 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])
我正在 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])