我无法通过Python获得斐波那契序列程序

时间:2017-01-15 14:35:53

标签: python fibonacci

我试图编写一个程序来打印前100个斐波那契数字。这是我的代码:

def main():

    print("The first 100 Fibonacci numbers are: ")
    fibonacciList = (0,0,1)
    loop = False

    while not loop:

        listLength = len(fibonacciList)
        newFibonacci = fibonacciList[-1] + fibonacciList[-2]
        fibonacciList = newFibonacci + fibonacciList


        if (listLength > 103):
            loop = true

        print(fibonacciList)

main()

当我运行它时,我在下面引用了fibonacciList = newFibonacci + fibonacciList行的错误:

TypeError: unsupported operand type(s) for +: 'int' and 'tuple'

我不明白错误。

P.S。:Fibonacci列表中的两个零是为了防止我之前得到的其他一些错误。

3 个答案:

答案 0 :(得分:1)

试试这个:

print("The first 100 Fibonacci numbers are: ")
fibonacciList = (0,0,1)
loop = False

while not loop:

    listLength = len(fibonacciList)
    newFibonacci = fibonacciList[-1] + fibonacciList[-2]
    fibonacciList =  fibonacciList + (newFibonacci,)


    if (listLength > 103):
        loop = True

print(fibonacciList)

你不能在元组中添加一个int,但你可以用+连接两个元组,所以我们可以用(newFibonacci,)对int进行元组化。

有更有效和可读的方法来计算这个序列,但这解决了你当前的问题。

答案 1 :(得分:0)

你可以试试这个:

def main():

    print("The first 100 Fibonacci numbers are: ")
    fibonacciList = [0,0,1]
    loop = False

    while not loop:

        listLength = len(fibonacciList)
        newFibonacci = fibonacciList[-1] + fibonacciList[-2]
        fibonacciList.append(newFibonacci)


        if (listLength > 103):
            loop = True
            print(fibonacciList)

main()

答案 2 :(得分:0)

除了其他答案,您还可以尝试以下解决方案:更快,更高效,更易读:

def fib(n):
    fiblist = []
    x, y = 0, 1

    for i in range(n):
        fiblist.append(x)
        x, y = y, x + y

    print('The first {} Fibonacci numbers are: \n{}'.format(n, fiblist))

然后对于前100个Fibonacci数字调用函数如下:

fib(100)