我当前的代码接收到一个输入,该输入表明将有多少个斐波那契数相加,但在六个测试运行之一中输出是错误的

问题描述 投票:0回答:2

该代码基本上接收一个输入,即要相加的斐波那契数列的数量。首先,它使用 for 循环生成斐波那契列表,然后使用另一个 for 循环,将所述列表内的元素相加。

我不知道代码有什么问题,因为它在 6 次测试运行中运行良好,但有一个没有给出正确的答案。我的代码给出的输出是“1”,但显然这是不正确的,并且测试没有显示输入是什么。

如果有人可以通过指出任何错误或更正来帮助我,那将非常有帮助。

PS:我对 python 和整个编码都很陌生,所以如果你能简化复杂的编码术语,我将不胜感激:S

#!/bin/python3

import math
import os
import random
import re
import sys

# Complete the 'sumOfNFibonacciNumbers' function below.
#
# The function is expected to return an INTEGER.
# The function accepts INTEGER n as parameter.

def sumOfNFibonacciNumbers(n):
    n1,n2=0,1
    fib=[]
    s = 0
    
    if n <= 0:
        fib.append(0)
        return 0
    elif n == 1:
        fib.append(1)
        return 1
    else:
        fib.append(0)
        fib.append(1)
        for i in range(2,n):
            x=fib[i-1]+fib[i-2]
            fib.append(x)
   
        for i in range(0,len(fib)):
            s = s + fib[i] 
        return(s)

if __name__ == '__main__':
    fptr = open(os.environ['OUTPUT_PATH'], 'w')

    n = int(input().strip())

    result = sumOfNFibonacciNumbers(n)

    fptr.write(str(result) + '\n')

    fptr.close()
    

python for-loop sum fibonacci
2个回答
2
投票

目前,关于斐波那契值,从索引

2
开始,您得到的结果不正确
0 1 1 2 3 5 8

i=0 sum=0
i=1 sum=1
i=2 sum=1 should be 2
i=3 sum=2 should be 4
i=4 sum=4 should be 7
i=5 sum=7 should be 12

For 循环应转到

n+1
,以便间隔为
[2;n]
(包括
n


然后你可以简化一点,删除在第一个

fib
情况下使用
if
,并使用内置的
sum
然后

def sumOfNFibonacciNumbers(n):
    if n <= 0:
        return 0
    elif n == 1:
        return 1
    else:
        fib = [0, 1]
        for i in range(2, n + 1):
            fib.append(fib[i - 1] + fib[i - 2])
        return sum(fib)

0
投票

我在 For 循环中也面临同样的问题。后来你能解决这个问题吗?如果是的话,你能帮我吗?我使用与上面提到的相同的代码,但 0f 8 个测试 1 失败了

def sumOfNFibonacciNumbers(n): 如果 n <= 0: return 0 elif n == 1: return 1 else: fib = [0, 1] for i in range(2, n): fib.append(fib[i - 1] + fib[i - 2]) return sum(fib) if name == 'main': fptr = open(os.environ['OUTPUT_PATH'], 'w')

n = int(input().strip())

result = sumOfNFibonacciNumbers(n)

fptr.write(str(result) + '\n')

fptr.close()
© www.soinside.com 2019 - 2024. All rights reserved.