这是我的作业问题。我们被要求找到级数的总和-> 1 + 1/2 + 1/3 + 1/4 ... + 1 / n(这里n = 20)

下面提供了我尝试过的代码。

denominator=1
num=float(1/denominator)
sum=0
while denominator<=20:
    print(num)
    sum+=num
    denominator+=1
print(f'the sum of the above series is {sum}.')


输出结果为20。但这不是必需的结果。

最佳答案

1 / denominator已经是浮点数,因此不需要float(...),并且一次将1 / denominator分配给num并不意味着num会随着denominator的变化而改变,因此,您应该计算1 / denominator循环中的每个denominator,并避免将内置函数sum(您可能已经用来解决此问题)用作变量名:

denominator = 1
s = 0
while denominator <= 20:
    num = 1 / denominator
    print(num)
    s += num
    denominator += 1
print(f'the sum of the above series is {s}.')


输出:

1.0
0.5
0.3333333333333333
0.25
0.2
0.16666666666666666
0.14285714285714285
0.125
0.1111111111111111
0.1
0.09090909090909091
0.08333333333333333
0.07692307692307693
0.07142857142857142
0.06666666666666667
0.0625
0.058823529411764705
0.05555555555555555
0.05263157894736842
0.05
the sum of the above series is 3.597739657143682.


将内置的sum与生成器表达式一起使用:

s = sum(1 / d for d in range(1, 21))

关于python - 使用while循环求出1 + 1/2 + 1/3…+ 1/n的和,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57844002/

10-11 07:43