我无法让 Python 中的斐波那契数列程序运行

I can't get my Fibonacci sequence program in Python to work

我正在尝试编写一个程序来打印前 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.: 斐波那契列表中的两个零是为了防止我之前遇到的其他一些错误。

试试这个:

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)

您不能将整数添加到元组中,但可以使用 + 连接两个元组,因此我们可以 tuple-ize 使用 (newFibonacci,) 的整数。

有更有效和更易读的方法来计算这个序列,但这解决了您的直接问题。

你可以试试这个:

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()

除了其他答案之外,您还可以尝试以下解决方案,它更快、更高效且可读性更好:

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 个斐波那契数按如下方式调用函数:

fib(100)