Python ...显示正数偶数...

时间:2013-07-25 00:28:36

标签: python

我是python的新手,虽然以下问题似乎很容易但我似乎无法做到正确。之后我在代码中输入了n的输入,并且无法想出一种方法来获得有效的公式。

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

感谢您的帮助!!!

4 个答案:

答案 0 :(得分:3)

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

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

  2. sum功能非常有用。

答案 1 :(得分:3)

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

答案 2 :(得分: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分割时,类似的参数可以起作用。

答案 3 :(得分: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))