我是python的新手,虽然以下问题似乎很容易但我似乎无法做到正确。之后我在代码中输入了n的输入,并且无法想出一种方法来获得有效的公式。
这是一个问题: 编写一个程序,要求用户输入正整数输入n,并输出和2 + 4 + 6 + 8 + ... + n,即所有正整数和n的总和。
感谢您的帮助!!!
答案 0 :(得分:3)
两个提示,因为这是一项任务,但您没有发布任何代码。
range
函数可以生成所需的列表。它需要3个参数,列表的开头,停止(不包括在列表中)和步骤。由于您计算其他所有数字,因此您的步数为2。
sum
功能非常有用。
答案 1 :(得分:3)
显然,您要查找的结果是[1, n/2]
中整数总和的两倍,后者的计算结果为(n/2)*(n/2 + 1)/2
。您正在寻找的公式是(n/2)*(n/2 + 1)
。
答案 2 :(得分:1)
假设n=8
。 range
为您提供了您要添加的数字列表
>>> 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))