如何生成 Python 中的斐波那契数列,其值不应超过目标值

How do I generate a Fibonacci series in Python whose value shouldn't exceed a target value

Python 的新手,需要一些帮助。

我正在尝试生成一个斐波那契数列并将每个元素放入一个列表中。我想设置一个条件,这样我不希望 Fibonacci 列表包含任何大于目标值的元素。我创建了一个函数 myFib 来生成这个列表并传递一个参数 20 希望我的 Fibonacci 列表只包含小于 20 的值。我的循环在附加元素 21 后停止,我试图弄清楚我做错了什么这里。一旦我让它工作,我想为 2000000 的目标值做这件事,所以在我设置一个大的目标值之前试图弄清楚机制。感谢任何帮助。

def myFib(max_count):
    a = 1
    b = 1
    fiblist = [1, 1]
    while fiblist[-1] <= max_count:
        temp = a
        a = b
        b = temp + a
        fiblist.append(b)
        print(fiblist)
    return fiblist

myFib(20) 

我得到的输出是

[1, 1, 2, 3, 5, 8, 13, 21]

您可以在代码中添加一个条件来打破 while 循环,以免任何值超过您的 max_count 变量,例如:

def myFib(max_count):
    a = 1
    b = 1
    fiblist = [1, 1]
    while fiblist[-1] <= max_count:
        temp = a
        a = b
        b = temp + a
        if b > max_count:
            break
        fiblist.append(b)
        # print(fiblist)
    return fiblist

输出:

myFib(20)
>>> [1, 1, 2, 3, 5, 8, 13]