我无法让 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)
我正在尝试编写一个程序来打印前 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)