Python求1到N(含N)整数累加和:代码问题解析
计算1到N整数和的代码问题解析
需求说明
接收用户输入的整数N,计算并输出1到N(包含N)的所有整数之和。
最初的错误代码
n=int(input()) nums = range (0,n) sum = sum(nums) print(sum)
错误原因
Python里的range(a, b)函数生成的是左闭右开的整数序列——包含起始值a,但不包含结束值b。你写的range(0, n)生成的是0、1、2、…、n-1这些数,求和结果是0+1+2+…+(n-1),和需求里的1到n的和相比,少了n这个数(0对求和结果没有影响),所以输出结果不符合要求。
为什么加N的方法能生效
sum(range(0, n))的结果本质是1到n-1的和(加0不改变总和),给这个结果加上n之后,就正好补上了缺失的那个数,得到的就是1+2+…+n的正确总和,所以能得到符合需求的结果。
更规范的写法
其实不需要用“加N”的临时方法,直接生成包含1到n的序列即可:
n = int(input()) print(sum(range(1, n+1)))
另外,还可以用数学公式直接计算,效率更高(尤其当N很大时):
n = int(input()) print(n * (n + 1) // 2)
内容的提问来源于stack exchange,提问作者Sahithya
相关产品推荐
相关产品推荐

