这是我的作业题。我们被要求找到系列的总和 -> 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 ,所以不需要float(...),将1/denominator赋值给num once 并不意味着 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))
