如何编写汇总数字的python循环

时间:2014-03-02 03:49:01

标签: python loops python-3.x

我正在尝试编写一个循环来计算以下一系列数字的总和: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()

3 个答案:

答案 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的内置函数。您可以调用该变量resultmy_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()

此外,除非您知道自己在其他地方的程序中没有使用它,否则不应覆盖sumsum是python中的保留字。