Skip to main content
 首页 » 编程设计

python之使用 while 循环求数列 1 + 1/2 + 1/3 ....+ 1/n 的总和

2025年05月04日16dyllove98

这是我的作业题。我们被要求找到系列的总和 -> 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))