如何使用循环然后计算列表的总和?

How to use a loop then calculate the sum of a list?

我需要编写一个函数“sum_reciprocals()”,它接受 1 个输入参数、一个正整数“n”和 returns1 个输出值,即所有参数的倒数之和从 1 到 n(含)的整数。 结果应以浮点数形式返回,并四舍五入到小数点后 5 位。

这是我的代码

def sum_reciprocals(n):
    x = [1]
    n = 10000
    for i in range(2,n+1):
        x.append(x[i-2]+1/x[i-1])
    sum_reciprocals = round(sum(x))
    return sum_reciprocals

但是它在我的第五行显示“IndexError: list index out of range”。

您的列表只有一个元素,但在 for 循环的第一次迭代中您尝试访问第 0 个和第一个元素:)

无法真正理解这有什么意义

x.append(x[i - 2] + 1 / x[i - 1])

您可以使用 i1 迭代到 n,然后将 1 / i 添加到总和中,就像这样

def sum_reciprocals(n):
    total = 0
    for i in range(1, n + 1):
        total += 1 / i

    return total

或将列表理解与 sum() 函数一起使用

def sum_reciprocals(n):
    return sum([1 / i for i in range(1, n + 1)])

甚至向其中添加 lambda 表达式

 sum_reciprocals = lambda n: sum([1 / i for i in range(1, n + 1)])

虽然最后一个会违反 PEP 8 E731 代码风格标准(但很高兴知道你可以做到)