1)定义一个函数,生成并返回fibonacci数列的前N项,[0,1,1,2,3,5,8...] 2) 求该数列前N项数据的和,保存在total """ num=eval(input()) def gen_list(N): # ********** Begin *********# ls=[] if N==0: ls=[0] elif N==1: ls=[0,1] else: ls=[0,1] for i in range(2,N-1): ls.append(ls[i-1]+ls[i-2]) return ls # ********** End *********# print(gen_list(num)) total=0 # ********** Begin *********# #求该数列前N项数据的和 for i in gen_list(num): total=total+i # ********** End *********# print(total)检查此代码问题
时间: 2023-07-05 08:25:14 浏览: 110
Fibonacci:以下函数生成序列号为 m 的斐比那契数列。-matlab开发
在检查你的代码时,发现以下问题:
1. 在生成Fibonacci数列时,需要将 `range(2, N-1)` 修改为 `range(2, N)`,否则会少生成一项。
2. 在 `gen_list()` 函数中,可以将前三个判断条件合并为一个,简化代码。
3. 在 `gen_list()` 函数中,可以使用列表推导式来生成Fibonacci数列,代码更加简洁。
4. 在求Fibonacci数列前N项数据的和时,可以使用Python内置的 `sum()` 函数,简化代码。
修改后的代码如下:
```python
def gen_list(N):
"""
生成并返回Fibonacci数列的前N项
"""
if N < 1:
return []
fib = [0, 1]
for i in range(2, N):
fib.append(fib[i-1] + fib[i-2])
return fib
num = eval(input())
fib = gen_list(num)
print(fib)
total = sum(fib)
print(total)
```
希望这个解答能够帮助你!
阅读全文