今
日
鸡
汤
姑苏城外寒山寺,夜半钟声到客船。
大家好,我是Python进阶者。
一、前言
前几天在Python钻石交流群有个叫【dcpeng】的粉丝问了一个关于Python基础的问题,这里拿出来给大家分享下,一起学习。
题目如下:求1-2+3-4+5…+99的所有数的和。提示:使用循环,每次循环都把上一次计算的结果累加在一个变量里,使用Python如何实现?
看上去确实不太难,简单的数学运算,有点数学基础都可以做出来,难的是Python实现,这里给出5个解法,大家一起学习下。
二、解决过程
方法一:【dcpeng】的解答
方法一的代码如下所示:
odd = 0
even = 0
for i in range(100):
if i % 2 == 1:
odd += i
else:
even += i
print(odd - even)
功能上实现是没问题的,但是这里引入了两个变量,跟题目的要求有点出入,要求是每次循环都把上一次计算的结果累加在一个变量里。所以在方法二中,给予了补充。
方法二:【dcpeng】的解答
这里给出第二种解法,代码如下所示:
count = 1
sum = 0
while count
这里给出的代码就符合题意了,完美解决。
方法三:【布达佩斯的永恒】的解答
这里引入了range()
函数,也可以有妙用,代码如下:
s = 0
for i in range(1,100):
if i % 2 == 0:
s -= i
else:
s+=i
print(s)
方法四:【月神】的解答
这里给出另外一个高大上的解答,两行代码就搞定了,出自【月神】之手,代码如下:
from itertools import accumulate
list(accumulate((i if i % 2 else -i for i in range(1, 100))))
其实这里可以直接用sum,不用再在list外面套个sum。
from itertools import accumulate
print(sum(accumulate((i if i % 2 else -i for i in range(1, 100)))))
accumulate这个相当于累加器。代码一出,小伙伴们直呼好家伙。
方法五:【德善堂小儿推拿-瑜亮老师】的解答
基于【月神】的解法,【亮哥】发现理论上这样也算符合题意:
print(sum(i if i % 2 else -i for i in range(1, 100)))
事实上确实如此,完美解决!
三、总结
大家好,我是Python进阶者。这篇文章基于粉丝提问,针对一道使用Python编程来实现高斯计算的基础算术题目基础题问题,给出了具体说明和演示,一共给出了5个解决方法,顺利地帮助粉丝解决了问题。
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.e1idc.net