我试图找到系列的总和: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练习.
这工作正常,但为什么不只是使用一个"求和"变量(称之为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) .这就是为什么你应该学习更多的数学作为程序员:)
| 归档时间: |
|
| 查看次数: |
8194 次 |
| 最近记录: |