我正在尝试编写一个循环来计算以下一系列数字的总和:1/30 + 2/29 + 3/28 + ... + 30/1。 我无法弄清楚如何添加,因为下面的程序只显示总数为0.033333333 ....
def main():
A=1
B=30
sum=(A/B)
while A<=30:
A+=1
B-=1
print('Total:',sum)
main()
答案 0 :(得分:4)
创建两个所需数字的列表,计算每个分数的值,然后求和。
sum(( a/b for a,b in zip(range(1,31),range(30,0,-1))))
答案 1 :(得分:4)
您不会在每次迭代时向sum
添加任何内容。你必须添加
sum = sum + A / B
在while
循环内。但是你必须用零来初始化sum
:
sum = 0
注意:强>
不要使用sum
作为变量的名称,因为它是Python的内置函数。您可以调用该变量result
,my_sum
,...
<强>代码:强>
def main():
A = 1
B = 30
result = 0
while A <= 30:
print A, B
result += (A / B)
A += 1
B -= 1
print('Total:', result)
main()
同时强>
您可以在总和的每个字词中看到A + B == 31
,所以B == 31 - A
。因此,代码可以简化:
def main():
A = 1
result = 0
while A <= 30:
result += (float(A) / (30 - A + 1))
A += 1
print('Total:', result)
答案 2 :(得分:2)
您可能意味着这是您的代码:
def main():
A=1
B=30
sume= A/B
while B>1:
A+=1
B-=1
sume += A/B
print('Total:',sume)
main()
此外,除非您知道自己在其他地方的程序中没有使用它,否则不应覆盖sum
。 sum
是python中的保留字。