有人可以帮助检查为什么结果总是为一,并让我知道我做错了什么吗?谢谢
正确的结果应为: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浮点数不能代表所有分数,因此,如果仅添加分数,则可以使用Fraction
class
>>> from fractions import Fraction as F
>>> F(1,1) + F(1,2) + F(1,3)
Fraction(11, 6)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句