标题:求1-2+3-4+5..-996的和
只看楼主
后卿
Rank: 4
来 自:网络
等 级:业余侠客
帖 子:297
专家分:295
注 册:2016-10-22
结帖率:82.28%
已结贴  问题点数:20 回复次数:6 
求1-2+3-4+5..-996的和
大家帮我看看代码为什么出错了
s=0
for i in range(1,997):
    if i%2==0:
        i=-i
    else:
        i=i
    s+=i
print(s)
运算结果总是不对,是逻辑问题吗
2018-08-04 17:46
lonmaor
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:郑州
等 级:版主
威 望:75
帖 子:2637
专家分:6423
注 册:2007-11-27
得分:20 
结果没错啊 不过这样是不是更好
程序代码:
sum = 0
for i in range(1,997):
    if i%2:
        sum+=i
    else:
        sum-=i
print(sum)



从不知道到知道,到知道自己不知道,成长的道路上脚步深深浅浅
2018-08-05 18:49
后卿
Rank: 4
来 自:网络
等 级:业余侠客
帖 子:297
专家分:295
注 册:2016-10-22
得分:0 
回复 2楼 lonmaor
原题目是这样的。

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

1-2+3-4...966

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

 
2018-08-05 20:09
ggg636363
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2019-3-21
得分:0 
if i%2==0:
   i*==-1
這樣應該可以了吧
2019-03-26 16:20
ZeroMyself
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2019-4-28
得分:0 
#!/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)


我试了一下,结果是正确的。
2019-04-28 13:35
hello_py
Rank: 2
等 级:论坛游民
威 望:1
帖 子:9
专家分:27
注 册:2019-4-21
得分:0 
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编辑过]

2019-04-29 22:22
橘络
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2021-10-24
得分:0 
对的

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

2021-10-24 21:15



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-489031-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.234462 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved