利用python进行数据分析——第三章range实例——0到99999中3或5的倍数求和——小记

《利用python进行数据分析》第三章range介绍时,有这么一个例子:

可以使用list来存储range在其他数据结构中生成的所有整数,默认的迭代器形式通常是你想要的。下面的代码对0到99999中3或5的倍数求和:

sum = 0
for i in range(100000):
    # % is the modulo operator
    if i % 3 == 0 or i % 5 == 0:
        sum += i

结果:2333316668

虽然range可以产生任意大的数,但任意时刻耗用的内存却很小。

我用的另一种方法,过程有点曲折(还是思考不到位),在这记录一下,首先上代码

正确版:

 a=0
 b=0
 v=0
 for i in range(0,100000,1):
     if i*3<=99999 and i*3 % 5 != 0:
         a = i*3
         v = v+a
     if i*5<=99999:
         b = i*5
         v= v+b
 print(v)

结果:2333316668

错误版:

 a=0
 b=0
 v=0
 for i in range(0,100000,1):
     if i*3<=99999:
         a = i*3
         v = v+a
     if i*5<=99999:
         b = i*5
         v= v+b
 print(v)

错误版没有将重复数据剔除

例如:计算0到20中3或5的倍数求和

正确的应该是:

3+5+6+9+10+12+15+18=78

而错误版计算的是:

(3+6+9+12+15+18)+(5+10+15)=93,

“15”计算了两次,唉,还是不够严谨,记录一下。

发布了15 篇原创文章 · 获赞 11 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/baidu_28660921/article/details/104189804
今日推荐