注册 登录
编程论坛 Python论坛

求1-2+3-4+5..-996的和

后卿 发布于 2018-08-04 17:46, 4425 次点击
大家帮我看看代码为什么出错了
s=0
for i in range(1,997):
    if i%2==0:
        i=-i
    else:
        i=i
    s+=i
print(s)
运算结果总是不对,是逻辑问题吗
6 回复
#2
lonmaor2018-08-05 18:49
结果没错啊 不过这样是不是更好
程序代码:
sum = 0
for i in range(1,997):
    if i%2:
        sum+=i
    else:
        sum-=i
print(sum)


#3
后卿2018-08-05 20:09
回复 2楼 lonmaor
原题目是这样的。

编写程序计算如下数列的值:

1-2+3-4...966

其中,所有数字为整数,从1开始递增,奇数为正,偶数为负

 
#4
ggg6363632019-03-26 16:20
if i%2==0:
   i*==-1
這樣應該可以了吧
#5
ZeroMyself2019-04-28 13:35
#!/usr/bin/python
s=0
for i in range(997):
    if i%2==0:
        s-=i
        #print("偶数:%d     结果为:%d" % (i,s))
    else:
        s+=i
        #print("奇数:%d     结果为:%d" % (i,s))
print(s)


我试了一下,结果是正确的。
#6
hello_py2019-04-29 22:22
print(sum((-1)**(n-1)*n for n in range(1,997)))

或者
import numpy as np
def f(n):
    return (-1)**(n-1)*n
s=sum(f(np.array(range(1,997))))
print(s)

据说用numpy计算速度快。不过这点计算量体现不出来,算到9999997,就能体现差别

[此贴子已经被作者于2019-4-29 22:26编辑过]

#7
橘络2021-10-24 21:15
对的

[此贴子已经被作者于2021-10-24 21:16编辑过]

1