写了一个
python程序,使用高斯方程将数字从1加到给定数字.它适用于100和10但是当我做3时它表示总和是4而不是6.这个等式在我的头脑中解决了,我是否弄乱了代码?
def numberSum(num):
nim = int(num)
num = (nim/2)*(nim+1)
return num
print numberSum(raw_input())
最佳答案
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不应该负责输入类型;如果它需要一个数字,你应该给它一些数字,而不是一个字符串.
>如果num是int,则num或num 1是偶数,即将num *(num 1)除以2将导致int.这不一定适用于num;因此,如果需要整数结果,则应将乘积除以2而不是num.
>在Python 2.6中,来自__future__ import division使/始终返回一个float结果并且//总是返回一个int结果,与Python 3.x一致