0
点赞
收藏
分享

微信扫一扫

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


姑苏城外寒山寺,夜半钟声到客船。

大家好,我是Python进阶者。

一、前言

前几天在Python钻石交流群有个叫【dcpeng】的粉丝问了一个关于Python基础的问题,这里拿出来给大家分享下,一起学习。


盘点一道使用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)))))

盘点一道使用Python编程来实现高斯计算的基础算术题目_数据分析_02

accumulate这个相当于累加器。代码一出,小伙伴们直呼好家伙。


方法五:【德善堂小儿推拿-瑜亮老师】的解答

基于【月神】的解法,【亮哥】发现理论上这样也算符合题意:

print(sum(i if i % 2 else -i for i in range(1, 100)))

事实上确实如此,完美解决!

三、总结

大家好,我是Python进阶者。这篇文章基于粉丝提问,针对一道使用Python编程来实现高斯计算的基础算术题目基础题问题,给出了具体说明和演示,一共给出了5个解决方法,顺利地帮助粉丝解决了问题。


举报

相关推荐

0 条评论