我是 python 新手,虽然下面这个问题看起来很简单,但我似乎做错了。在我将 n 的输入放入代码中之后,我想不出一种方法来获得一个有效的公式。
这就是问题:编写一个程序,要求用户输入一个正偶整数 n,输出总和 2+4+6+8+...+n,即直到 n 的所有正偶整数的总和.
谢谢你的帮助!!!
我是 python 新手,虽然下面这个问题看起来很简单,但我似乎做错了。在我将 n 的输入放入代码中之后,我想不出一种方法来获得一个有效的公式。
这就是问题:编写一个程序,要求用户输入一个正偶整数 n,输出总和 2+4+6+8+...+n,即直到 n 的所有正偶整数的总和.
谢谢你的帮助!!!
两个提示,因为这是一项任务,您还没有发布任何代码。
该range
函数可以生成您想要的列表。它需要 3 个参数,列表的开始、停止(不包含在列表中)和步骤。由于您要计算其他数字,因此您的步数为 2。
该sum
功能将非常有用。
显然,您要查找的结果是 中的整数之和的两倍[1, n/2]
,其计算结果为(n/2)*(n/2 + 1)/2
。因此,您正在寻找的公式是(n/2)*(n/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 整除时,类似的论点也有效。
最简单,但会给出奇数或负数的错误答案:
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))