编写了一个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())
答案 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
不应对输入输入负责;如果它需要一个数字,你应该给它某种的数字,而不是字符串。
如果num
是int
,则num
或num + 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())