如何使用循环然后计算列表的总和?
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])
您可以使用 i
从 1
迭代到 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 代码风格标准(但很高兴知道你可以做到)
我需要编写一个函数“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])
您可以使用 i
从 1
迭代到 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 代码风格标准(但很高兴知道你可以做到)