Python部分谐波

兔子

有人可以帮助检查为什么结果总是为一,并让我知道我做错了什么吗?谢谢

正确的结果应为:1/1 + 1/2 + 1/3 == 1.83333333333。

x = int(input("Enter n: "))
assert x > 0, "n must be greater than zero!"

def one_over_n(x):

    result = 0

    for n in range(x):
        n += 1
        result += 1 / n
    return result
r = one_over_n(x)
print("one_over_n( {0:d} ): {1:f}" .format(x, r))
阿努拉格·乌尼雅尔

它将在python 3上正常工作,但在python 2上却不能正常工作

>>> 1/2
0

这意味着您只是将零加到1。您需要将分子或分母更改为浮点数,例如1/2.0,因此将代码更改为

result += 1.0 / n

请参阅Pep 238以了解为什么在python 3中对其进行了更改。

btw浮点数不能代表所有分数,因此,如果仅添加分数,则可以使用Fractionclass

>>> from fractions import Fraction as F
>>> F(1,1) + F(1,2) + F(1,3)
Fraction(11, 6)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章