实现Sn=1-3+5-7+…求前n项和

img

为什么这样不能实现Sn求前n项和
想问下,改哪里才能实现求和?

此题看似简单,其实有坑,前n项之和,并不能以n为终点。比如前2项之和,是1和-3,而前4项之和是1,-3,5,-7,所以用for循环的话容易漏掉数字,而用while循环就很简单了。

n = int(input("输入一个整数n:"))
start = 0
Sn = 0
k = -1
while start<n:
    k *= -1
    Sn += (2*start+1)*k
    start += 1
print(Sn)

当然,如果稍微心算一下,就能看出答案很容易得出,谜底就在谜面上。。。

n = int(input())
if n%2:
    print(n)
else:
    print(-n)

1.应该是range(1,n+1)
2.应该是 i % 2 == 0不是 %4
整体改成:

n=int(input(请输入整数n:"))
x=0
Sn=0
for i in range(1,n+1)
                  if i%2==0:
                      x = -i
                  if i % 2!=0:
                       x=i
                  Sn=Sn+x
print(Sn)
n = int(input("输入一个整数n:"))
k=-1
sum=0

for i in range(1,n+1,2):
    k=k*-1
    sum+=(k*i)

print("sum =",sum)

img