Python 求序列1和x2B的和;1/2+;1/3……+;1/n,使用while循环
这是我的家庭作业问题。我们被要求找到系列的总和->1+1/2+1/3+1/4…+1/n(此处n=20) 下面提供了我尝试的代码Python 求序列1和x2B的和;1/2+;1/3……+;1/n,使用while循环,python,python-3.x,Python,Python 3.x,这是我的家庭作业问题。我们被要求找到系列的总和->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}.') 分母=1 num=浮点(1/分母) 总
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}.')
分母=1
num=浮点(1/分母)
总和=0
虽然分母1/分母
已经是一个浮点数,所以不需要浮点数(…)
,将1/分母
赋值给num
一次并不意味着num
将随着分母
的变化而变化,因此,您应该为循环中的每个分母
计算1/分母
,并避免使用内置函数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}.')
使用内置的sum
和生成器表达式:
s = sum(1 / d for d in range(1, 21))
1/分母
已经是一个浮点数,因此不需要float(…)
,将1/分母
赋值给num
一次并不意味着num
将随着分母
的变化而变化,因此,您应该为循环中的每个分母
计算1/分母
,并避免使用内置函数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}.')
使用内置的sum
和生成器表达式:
s = sum(1 / d for d in range(1, 21))
输出:
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.
3.59773965714
the sum of the above series is : 55835135/15519504
the sum of the above series is : 3.597739657143682
输出:
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.
3.59773965714
the sum of the above series is : 55835135/15519504
the sum of the above series is : 3.597739657143682
浮点(1/分母)不是函数定义,但它返回一个值。
调用此代码时,它将计算为当前值1/分母=1/1=1
因此,在while循环中,您为20次迭代添加1,这就是您得到20次迭代的原因。
创建函数或将逻辑移到循环中
def get_num(denominator):
return float(1/denominator)
denominator=1
sum=0
while denominator<=20:
sum+=get_num(denominator)
denominator+=1
print(f'the sum of the above series is {sum}.')
denominator=1
sum=0
while denominator<=20:
sum+=float(1/denominator)
denominator+=1
print(f'the sum of the above series is {sum}.')
def get_num(分母):
返回浮动(1/分母)
分母=1
总和=0
虽然分母浮点(1/分母)不是函数定义,但它返回一个值。
调用此代码时,它将计算为当前值1/分母=1/1=1
因此,在while循环中,您为20次迭代添加1,这就是您得到20次迭代的原因。
创建函数或将逻辑移到循环中
def get_num(denominator):
return float(1/denominator)
denominator=1
sum=0
while denominator<=20:
sum+=get_num(denominator)
denominator+=1
print(f'the sum of the above series is {sum}.')
denominator=1
sum=0
while denominator<=20:
sum+=float(1/denominator)
denominator+=1
print(f'the sum of the above series is {sum}.')
def get_num(分母):
返回浮动(1/分母)
分母=1
总和=0
而分母则可以使用python的分数模块进行此计算
以上代码在python2.7和上进行了测试
它打印两行。第一个将值打印为分数,第二个将值打印为浮点。您可以使用python的分数模块进行此计算
以上代码在python2.7和上进行了测试
它打印两行。第一个将值打印为分数,第二个将值打印为浮点。将其添加到sum
时,不在while循环中更新num
。您需要将while循环中的num
更新为num=1/分母
您将while循环中的num
添加到sum
中时,不会对其进行更新。您需要使用sum
将while循环中的num
更新为num=1/分母
来隐藏内置的sum()
函数,顺便说一句,正如MrGeek提到的那样,该函数在这里很有用:s=sum(1/d表示范围(1,21)中的d))
这确实很紧凑,但我们没有在python中学习范围的用法。此外,我们还被要求使用while循环来解决这个问题。无论如何,谢谢!使用sum
隐藏内置的sum()
函数,顺便说一句,正如MrGeek提到的那样,该函数在这里很有用:s=sum(1/d表示范围(1,21)中的d)
这确实很紧凑,但我们没有学习python中范围的使用。此外,我们还被要求使用while循环来解决这个问题。无论如何,谢谢!每次循环后,它都从while开始,而不是从开始。不是吗?在每次循环之后,它都从while开始,而不是从开始。不是吗?