显示斐波纳契计算中的所有数字

时间:2016-11-07 13:59:40

标签: python python-3.x

这是我的在线课程模块的一部分,我需要编写一个用户输入number(n)的程序,程序然后打印斐波纳契系列中的第一个n数字。

我目前编写了该程序,以便在某个位置打印出fibonacci号码。

例如,如果我输入“7”,它将打印“13”。

n = int(input("Enter a number:"))
fibonacciSeries = ((1+sqrt(5))**n-(1-sqrt(5))**n) /(2**n*sqrt(5))
print (fibonacciSeries)

如何修改此代码,以便打印出系列中第7个数字前的所有数字?

6 个答案:

答案 0 :(得分:1)

如果你需要重复一个操作,你需要循环,如果你还需要存储重复操作的结果,你需要一个列表。因此,使用列表推导来创建所有数字的列表,直到i(为了在range中使用而重命名)。

然后,您可以在print调用中解压缩以查看生成的所有数字。另外,/是浮点除法;你可能在这里进行了分区//,所以我为你修改了这个:

i = int(input("Enter a number:"))
fibonacciSeries = [((1+sqrt(5))**n-(1-sqrt(5))**n)//(2**n*sqrt(5)) for n in range(1, i+1)]
print ("Fibonacci Nums: ", *fibonacciSeries)

表达式:

[(...) for n in range(1, 1+1)]

将重复(...)i次的操作。

这导致:

Enter a number:7
Fibonacci Nums:  1.0 1.0 2.0 3.0 5.0 8.0 13.0

答案 1 :(得分:0)

嗯......假设你的计算是正确的(可能是,我以前从未见过)

n = int(input("Enter a number:"))
for i in range(1,n+1):
   fibonacciSeries = ((1+sqrt(5))**i-(1-sqrt(5))**i) /(2**i*sqrt(5))
   print (fibonacciSeries)

答案 2 :(得分:0)

你可以将它放在一个循环中,如下所示:

n = int(input("Enter a number:"))
for i in range(n + 1):
  fib = ((1+sqrt(5))**n-(1-sqrt(5))**n) /(2**n*sqrt(5))
  print(fib)

答案 3 :(得分:0)

如果您已经计算了Fibonacci序列的第一个n-1值,则没有理由不使用它们来确定n项。

a, b = 0, 1 #set a=0, b=1
for _ in range(n): #do the following n times
    print(a) #print one term each loop, for a total of n terms
    a, b = b, a+b #advance the sequence one step

答案 4 :(得分:0)

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 3 

斐波纳契生成器将弹出您想要的数字。我不知道你是否最终除了打印之外还有别的东西要做,但是当你输出一个系列时,强烈推荐使用发生器。

答案 5 :(得分:0)

这应该这样做。

def fibonacci():
    x,y = 1,1
    n=int(input("Enter number: "))
    n_int=int(n-2)
    for i in range (n_int):
        x,y=y,x+y
        print(x)
    print(y)