python加减混合循环计算想不出思路1-2+3-4+5 ...,python3-4,怎么求呢??想不出例如:
python加减混合循环计算想不出思路1-2+3-4+5 ...,python3-4,怎么求呢??想不出例如:
怎么求呢??想不出
例如:python循环题目求1-2+3-4+5 ... 99的所有数的和
>>> rslt=0>>> for n in range(1,100): rslt += n*(-1,1)[n&1] >>> rslt50
>>> sum(( n*(-1,1)[n&1] for n in range(1,100) ))50
代码
# 定义输出字符串aaa = ''# 定义计算结果bbb = 0for i in range(1,100): aaa += str(i) if i % 2 == 0: aaa += '+' bbb -= i else: aaa += '-' bbb += iprint('字符串输出: \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
def get_sum(lo, hi): return sum(range(lo, hi+1, 2)) + sum(range(lo+1, hi, 2))
>>> sum((sum(range(1, 100)[::2]), -sum(range(1, 100)[1::2])))>>> 50>>> # functools和itertools是你最强大的利器。
粗略的看了一下,前面几个答案都使用了for循环,个人觉得能少用就少用吧,尽量把时间变成O1。
假设参数为n,就是最大的那个数,并且都大于0,这里为99
当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))
可以这样计算:
>>> num = 0>>> for i in range(100):... if i % 2 == 0:... num = num - i... else:... num = num + i...>>> num50
另外,由于是前1个数字减去后1个数字,因此2个数值之间的和为-1,而99/2=49.5,因此,共有49对,其结果为-49,再与99相加可以得到99-49=50
编橙之家文章,
相关内容
- Python爬虫提取目标信息方法是?,python爬虫,最近在学写
- Python 如果按照WSGI的模型来看,werkzeug的位置在哪里?,
- Django生成目录命令是什么?,django生成目录命令,试试r
- 想获取html中time用python正则如何实现,timepython,想做一个
- python split函数内参数的具体作用,pythonsplit,str = server
- python numpy deep copy相关问题,pythonnumpy,在列表中,b=a[:
- 请问rc.local配置uwsgi启动不正常,rc.localuwsgi,操作系统:
- Python3.4怎样进入子目录语法是什么?,python3.4语法,比如
- 《Python核心编程》书中关于type的不解,,type(a)== ty
- Python WEB网页selenium截图不完整有什么解决方案吗,pyt
评论关闭