Python 使用嵌套WHILE循环生成意外结果的函数

Python 使用嵌套WHILE循环生成意外结果的函数,python,list,loops,while-loop,fibonacci,Python,List,Loops,While Loop,Fibonacci,我在大学里学习python,在一些概念上遇到了问题,主要是循环。我需要帮助了解我的代码产生错误结果的原因: def fibonacci(maxint): a, b = 0, 1 LIST = [a, b] while b < maxint: a, b = b, a + b LIST.append(b) return LIST 输出应显示为: [0, 1, 1, 2, 3, 5, 8] 但它实际上是在印刷: [0, 1, 1

我在大学里学习python,在一些概念上遇到了问题,主要是循环。我需要帮助了解我的代码产生错误结果的原因:

def fibonacci(maxint):
    a, b = 0, 1
    LIST = [a, b]
    while b < maxint:
        a, b = b, a + b
        LIST.append(b)
    return LIST
输出应显示为:

[0, 1, 1, 2, 3, 5, 8]
但它实际上是在印刷:

[0, 1, 1, 2, 3, 5, 8, 13]
有人能分析我的代码并告诉我以下内容吗:

它在哪里效率低下? 为什么它会越界,循环超过我函数中的10个参数? 首先,您的代码不是低效的,因为它是一种生成斐波那契数的迭代方法

其次,下面的代码将纠正代码中关于超出maxint的值的问题:


因为您在b[0, 1, 1, 2, 3, 5, 8, 13]
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
>>>fibonacci(10)
>>>[0, 1, 1, 2, 3, 5, 8]