我正在用Python 2.7.6编写一个程序来计算Fibonacci序列(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和其他人?
答案 0 :(得分:1)
当然,只需使用某种形式的循环。例如,如果您想在x
之后列出前11个斐波那契数字:
fiblist = [x]
for _ in range(10):
z = x + y
fiblist.append(z)
x, y = z, x
print(fiblist)
(或使用循环代替单print
来改变输出的化妆品 - 与您的核心Q无关。)
出于不同的目的(例如“列出序列中的所有数字,直到第一个数字超过100”),您可以轻松调整循环(例如代替for
使用while x <= 100:
)。
答案 1 :(得分:1)
您可以编写循环或只使用Python中的内置reduce函数。
fib = lambda n: reduce(lambda x, y: x+[x[-1]+x[-2]],range(n-2), [0, 1])