0

我是 python 新手,虽然下面这个问题看起来很简单,但我似乎做错了。在我将 n 的输入放入代码中之后,我想不出一种方法来获得一个有效的公式。

这就是问题:编写一个程序,要求用户输入一个正偶整数 n,输出总和 2+4+6+8+...+n,即直到 n 的所有正偶整数的总和.

谢谢你的帮助!!!

4

4 回答 4

3

两个提示,因为这是一项任务,您还没有发布任何代码。

  1. range函数可以生成您想要的列表。它需要 3 个参数,列表的开始、停止(不包含在列表中)和步骤。由于您要计算其他数字,因此您的步数为 2。

  2. sum功能将非常有用。

于 2013-07-25T00:31:11.290 回答
3

显然,您要查找的结果是 中的整数之和的两倍[1, n/2],其计算结果为(n/2)*(n/2 + 1)/2。因此,您正在寻找的公式是(n/2)*(n/2 + 1)

于 2013-07-25T00:32:17.613 回答
1

假设n=8range为您提供要添加的号码列表

>>> range(2, n+1,2)
[2, 4, 6, 8]

sum为您提供一种将列表中的条目相加的方法

>>> sum(range(2, n+1, 2))
20

可以在不使用此公式添加所有单个数字的情况下计算总和

>>> n*(n+2)/4
20

但是,如果您打算使用该答案,您可能应该展示如何推导公式。

这是n = 12的草图,A代表10和C代表12

22CCCCCCCCCCCC
4444AAAAAAAAAA
66666688888888

查看第一行,我们看到这个矩形很(n+2)宽。稍加思考后,您会发现高度为n/4. 总和就是这两个项的乘积。

n不能被 4 整除时,类似的论点也有效。

于 2013-07-25T00:45:20.430 回答
1

最简单,但会给出奇数或负数的错误答案:

n=int(raw_input('Enter a positive even integer:'))
print n*(n+2)/4

给出奇数和负数的正确答案:

n=int(raw_input('Enter a positive even integer:')) >>1<<1
print n*(n+2)/4 if n>0 else 0

或者

n=int(raw_input('Enter a positive even integer:'))
print sum(range(2, n+1, 2))
于 2013-07-25T00:56:24.847 回答