繁体   English   中英

Python:在给定的数字列表中查找每个斐波那契数列

[英]Python: Find Every Fibonacci Sequence in a Given List of Numbers

一个程序,它从用户那里获取以“,”分隔的数字列表,并从列表中提取并打印每个斐波那契数列。 像这样:

In: 5,6,9,3,0,1,1,2,3,8,2,9,3,0,1,1,2,3,5,98
Out: 
[0,1,1,2,3]
[0,1,1,2,3,5]

我尝试使用“for”循环来查找第一个 0 并在它之后处理程序。 就像它检查并跟踪斐波那契数列的列表,直到它超出序列,打印列表,然后查找下一个 0。我编写了获取输入的代码部分,但我不知道如何做剩下的

numbers = input("Enter your numbers list and use comma to seperate them: ")
numlist = numbers.split(",")
numlist = [int(x) for x in numlist]
result = []

“结果”是输出列表(或列表)。 我希望我的解释清楚。 任何人都可以帮忙吗?

下面的程序应该可以工作,它将检查数字列表中的斐波那契数列

numbers = [5,6,9,3,0,1,1,2,3,8,2,9,3,0,1,1,2,3,5,98]

first = numbers[0]
second = numbers[1]

fibbonacci = []
result = []

for number in numbers[2:]:
    if first + second == number:
        if not fibbonacci:
            fibbonacci.extend([first, second, number])
        else:
            fibbonacci.append(number)
    elif fibbonacci:
        result.append(fibbonacci)
        fibbonacci = []
    first = second
    second = number

print(result)

想法与@Vuplex 非常相似,但可以使用 os.path.commonprefix 删除额外的代码来比较两个系列

import os
numlist = list(map(int,input.split(',')))
answer = []
fib_series = [0,1,1,2,3,5,8,13]
answer = []
i = 0
while i < len(numlist):
    if not numlist[i]:
        answer.append(os.path.commonprefix([fib_series,numlist[i:]]))
    i += 1
print(answer) #[[0, 1, 1, 2, 3], [0, 1, 1, 2, 3, 5]]
FIB = [0,1,1,2,3,5,8,13]

def checkSequence(numArr):
    i = 0
    while i < len(numArr):
        if FIB[i] == int(numArr[i]):
            i += 1
        else:
            return i

numbers = input("Enter your numbers list and use comma to seperate them: ")
numlist = numbers.split(",")
answer = list()
i = 0
while i < len(numlist):
    if int(numlist[i]) == 0:
        ret = checkSequence(numlist[i:])
        answer.append(numlist[i:i+ret])
    i += 1

如您所见,您可以很容易地创建一个 CheckSquence 方法来检查数组拼接的序列并返回您找到的条目数量。 使用 checkSequence 中的答案,您可以为您的答案列表创建一个拼接。 这会产生您在问题中指定的结果。

编辑:您需要之前定义斐波那契数列。 您可以像我一样使用静态序列,也可以计算到某个点,然后与该结果进行比较。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM