我试图编写一个程序来打印前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列表中的两个零是为了防止我之前得到的其他一些错误。
答案 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)