回复“书籍”即可获赠Python从入门到进阶共10本电子书
大家好,我是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 <= 99:
if count % 2 == 1:
sum += count
else:
sum -= count
count += 1
print(sum)
这里给出的代码就符合题意了,完美解决。
方法三:【布达佩斯的永恒】的解答
这里引入了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个解决方法,顺利地帮助粉丝解决了问题。可以看到群里大家学习的激情还是很高的,探讨激烈。如果你还要其他方法,欢迎留言或者私信我噢!
最后感谢粉丝【dcpeng】提问,感谢【dcpeng】、【布达佩斯的永恒】、【月神】和【德善堂小儿推拿-瑜亮老师】大佬给出的示例和代码支持,感谢粉丝【Function】、【布达佩斯的永恒】、【某嘟】、【德善堂小儿推拿-瑜亮老师】、【PI】、【冫马讠成】、【杨羊】、【鞠欢】、【东哥】、【周凡】、【D I Y】、【孤烟逐云】、【猫药师Kelly】等人参与学习交流。
小伙伴们,快快用实践一下吧!如果在学习过程中,有遇到任何问题,欢迎加我好友,我拉你进Python学习交流群共同探讨学习。
------------------- End -------------------
往期精彩文章推荐:
欢迎大家点赞,留言,转发,转载,感谢大家的相伴与支持
想加入Python学习群请在后台回复【入群】
万水千山总是情,点个【在看】行不行
/今日留言主题/
随便说一两句吧~