Python函数用于求整数之和

时间:2016-02-21 21:28:08

标签: python function sum

编写了一个python程序,使用Gauss方程将数字从1加到给定数字。它适用于100和10,但是当我做3时,它表示总和是4而不是6.这个等式在我的头脑中解决了,我是否弄乱了代码?

def numberSum(num): 

    nim = int(num)
    num = (nim/2)*(nim+1)
    return num    

print numberSum(raw_input())  

2 个答案:

答案 0 :(得分:4)

from __future__ import division

def number_sum(num):
    """
    Return sum of 1 .. num
    """
    return num * (num + 1) // 2

num = int(raw_input(": "))
print(number_sum(num))

我改变的事情:

  • number_sum不应对输入输入负责;如果它需要一个数字,你应该给它某种的数字,而不是字符串。

  • 如果numint,则numnum + 1是偶数,即将num * (num + 1)除以2将导致int 。 必然属于num;因此,如果您想要整数结果,则应将乘积除以2,而不是num

  • 在Python 2.6+中,from __future__ import division使/始终返回float结果,//始终返回int结果,与Python一致3.X

答案 1 :(得分:3)

我认为您正在使用python2,因为默认情况下它会像其他语言一样应用整数除法。此外,您可以在此帖Integer division in python 2 and python 3中注意到此功能。

要解决您的问题,您可以采用下一种方法:

def numberSum(num): 
    nim = int(num)
    return ((nim * 1.0) / 2) * (nim + 1)    

print numberSum(raw_input())