搜索

首页  >  问答  >  正文

python循环题目求1-2+3-4+5 ... 99的所有数的和

怎么求呢??想不出

阿神阿神2802 天前4765

全部回复(6)我来回复

  • 天蓬老师

    天蓬老师2017-04-18 10:19:08

    可以这样计算:

    >>> 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

    回复
    0
  • 迷茫

    迷茫2017-04-18 10:19:08

    粗略的看了一下,前面几个答案都使用了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))

    回复
    0
  • PHP中文网

    PHP中文网2017-04-18 10:19:08

    雷雷


    雷雷

    回复
    0
  • 阿神

    阿神2017-04-18 10:19:08

    雷雷

    回复
    0
  • 迷茫

    迷茫2017-04-18 10:19:08

    代码

    # 定义输出字符串
    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

    回复
    0
  • PHP中文网

    PHP中文网2017-04-18 10:19:08

    雷雷

    回复
    0
  • 取消回复