首页 > 解决方案 > python for循环来评估方程

问题描述

我被要求编写一个函数,该函数应返回1000 + 1/1**2 + 1/2**2 + 1/3**2 + 1/4**2 + ... + 1/n**2 给定整数 n 的以下系列的总和。例如,对于 n = 0,函数应该返回 1000,对于 n = 1,函数应该返回 1001,对于 n = 2,函数应该返回 1001.25,对于 n = 3,函数应该返回 1001.3611111111111,等等。

我确信这需要通过 for 循环和范围函数来完成。这是我的代码

if n<0:
        return None
if n>0 or n==0:
        for i in range(1,n-1):
            result=1000+1/(i**2)
            return result

但是当 n=o,1,2,3 时它一直返回 None 我不确定如何修复此代码...

标签: python

解决方案


在每次迭代中,您不会result使用它的先前值进行更新。(而且您result过早返回。)使用result = result + 1 / (i ** 2)或等效地更新变量result += 1 / (i ** 2)

def foo(n):
    result = 1000
    for i in range(1, n+1):
        result += 1 / (i ** 2)
    return result

print(foo(0), foo(1), foo(2), foo(3)) # 1000 1001.0 1001.25 1001.3611111111111

或者,使用(生成器)理解,

def foo(n):
    return 1000 + sum(1 / (i ** 2) for i in range(1, n + 1))

推荐阅读