该代码基本上接收一个输入,即要相加的斐波那契数列的数量。首先,它使用 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()
目前,关于斐波那契值,从索引
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)
我在 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()