这是我的作业问题。我们被要求找到级数的总和-> 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}.')
Run Code Online (Sandbox Code Playgroud)
输出结果为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}.')
Run Code Online (Sandbox Code Playgroud)
输出:
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.
Run Code Online (Sandbox Code Playgroud)
使用内置sum的生成器表达式:
s = sum(1 / d for d in range(1, 21))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
345 次 |
| 最近记录: |