Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 求序列1和x2B的和;1/2+;1/3……+;1/n,使用while循环_Python_Python 3.x - Fatal编程技术网

Python 求序列1和x2B的和;1/2+;1/3……+;1/n,使用while循环

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/分母) 总

这是我的家庭作业问题。我们被要求找到系列的总和->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/分母)
总和=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开始,而不是从开始。不是吗?