盘点一道使用Python编程来实现高斯计算的基础算术题目

共 672字,需浏览 2分钟

 ·

2022-03-08 17:51

点击上方“Python爬虫与数据挖掘”,进行关注

回复“书籍”即可获赠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学习群请在后台回复【入群

万水千山总是情,点个【在看】行不行

/今日留言主题/

随便说一两句吧~

浏览 37
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报