python循环题目求1-2+3-4+5 ... 99的所有数的和
阿神
阿神 2017-04-18 10:17:08
[Python讨论组]

怎么求呢??想不出

阿神
阿神

闭关修行中......

全部回复(6)
天蓬老师

可以这样计算:

>>> num = 0
>>> for i in range(100):
...     if i % 2 == 0:
...         num = num - i
...     else:
...         num = num + i
...
>>> num
50

另外,由于是前1个数字减去后1个数字,因此2个数值之间的和为-1,而99/2=49.5,因此,共有49对,其结果为-49,再与99相加可以得到99-49=50

迷茫

粗略的看了一下,前面几个答案都使用了for循环,个人觉得能少用就少用吧,尽量把时间变成O1。
假设参数为n,就是最大的那个数,并且都大于0,这里为99

n result
1 1
2 -1
3 1
4 -2
5 3
6 -3

当n为奇数时,结果为正,result = ((n - 1) / 2) * (-1) + n
当n为偶数时,结果为负,也就是result = (n / 2) * (-1)
所以,答案就出来了。。

def compute(n):
    if n % 2 is 1:
        return int(((n - 1) / 2) * (-1) + n)
    else:
        return int((n / 2) * (-1))
PHP中文网
>>> rslt=0
>>> for n in range(1,100):
    rslt += n*(-1,1)[n&1]

    
>>> rslt
50

>>> sum(( n*(-1,1)[n&1] for n in range(1,100) ))
50
阿神
>>> sum((sum(range(1, 100)[::2]), -sum(range(1, 100)[1::2])))
>>> 50
>>> # functools和itertools是你最强大的利器。
迷茫

代码

# 定义输出字符串
aaa = ''
# 定义计算结果
bbb = 0

for i in range(1,100):
    aaa += str(i)
    if i % 2 == 0:
        aaa += '+'
        bbb -= i
    else:
        aaa += '-'
        bbb += i
print('字符串输出: \r\n %s \r\n计算结果: \r\n %s' % (aaa.rstrip('-'), bbb))

结果

字符串输出: 

 1-2+3-4+5-6+7-8+9-10+11-12+13-14+15-16+17-18+19-20+21-22+23-24+25-26+27-28+29-30+31-32+33-34+35-36+37-38+39-40+41-42+43-44+45-46+47-48+49-50+51-52+53-54+55-56+57-58+59-60+61-62+63-64+65-66+67-68+69-70+71-72+73-74+75-76+77-78+79-80+81-82+83-84+85-86+87-88+89-90+91-92+93-94+95-96+97-98+99- 

计算结果: 

 50
PHP中文网

def get_sum(lo, hi):
    return sum(range(lo, hi+1, 2)) + sum(range(lo+1, hi, 2))
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号