给定系列的总和

Var*_*run 4 python

我试图找到系列的总和:1 ? 1 / 2 + 1 / 3 ? 1 / 4 + · · · + 1 / 99 ? 1 / 100 ** 2用python.

我的代码是 -

psum = 0
nsum = 0
for k in range(1,100):
    if k%2 == 0:
        nsum += 1.0/k
    else:
        psum += 1.0/k

print psum - nsum - 1.0/100**2
Run Code Online (Sandbox Code Playgroud)

输出为0.69807217931

我没有答案,只想验证我是否做得对.

这不是一个功课问题,而只是随机的Python练习.

Kar*_*tel 5

这工作正常,但为什么不只是使用一个"求和"变量(称之为total一个良好的实践,因为有一个sum你不想隐藏的内置调用),实际上是添加或减去它在每一步?

或者(双关语!),实际上使用sum功能.该range功能也可用于跳过其他所有数字.

>>> sum(1.0/k for k in range(1, 100, 2)) - sum(1.0/k for k in range(2, 100, 2)) - (1.0/100**2)
0.6980721793101952
Run Code Online (Sandbox Code Playgroud)

或者,正如steveha所示,你可以使用逻辑来根据它是否可被2整除来判断是否加上或减去数字,并用"加权"总和处理它(根据需要加上1.0/k或-1.0/k) .这就是为什么你应该学习更多的数学作为程序员:)