我正在大学学习python,并且一直遇到一些概念,主要是循环。我需要帮助理解为什么我的代码产生了错误的结果:
def fibonacci(maxint):
a, b = 0, 1
LIST = [a, b]
while b < maxint:
a, b = b, a + b
LIST.append(b)
return LIST
为了测试脚本,我需要调用该函数并在控制台中将10作为参数传递:
>>>fibonacci(10)
输出应显示为:
[0, 1, 1, 2, 3, 5, 8]
但实际上是打印:
[0, 1, 1, 2, 3, 5, 8, 13]
有人可以分析我的代码并告诉我以下内容:
答案 0 :(得分:1)
首先,您的代码效率不高,因为它是用于生成斐波纳契数的迭代方法。
其次,以下代码将纠正您的代码中有关maxint
以外的值的问题:
def fibonacci(maxint):
a, b = 0, 1
LIST = [a]
while b < maxint:
LIST.append(b) # appending the b's value to the list before it is updated.
a, b = b, a + b
return LIST
您的代码正在打印 '13',因为在将值更改为'13'后,您将'b'的值附加到列表中/ strong>即可。因此,在'b = 8'的值的最后一个循环中,新更新的值将是'b = 13'。
>>>fibonacci(10)
>>>[0, 1, 1, 2, 3, 5, 8]