冬雪雪冬 发表于 2016-3-2 21:53:08

小练习结果揭晓: 找出1000以下自然数中3和5的倍数之和

原帖子:http://bbs.fishc.com/thread-69263-1-1.html
题目:
10 以下的自然数中,属于 3 和 5 的倍数的有 3, 5, 6 和 9,它们之和是 23

找出 1000 以下(不包括1000)的自然数中,属于 3 和 5 的倍数的数字之和



本题欧拉给出的参考答案的伪代码如下:
target=999
sum=0
for i=1 to target do
if (i mod 3=0) or (i mod 5)=0 then sum:=sum+i
output sum

如果换成python写,应该是这样的:
sum1 = 0 #变量名改为sum1避免与sum函数重名
for i in range(1, 1000):
    if i % 3 == 0 or i % 5 == 0:
      sum1 += i
print(sum1)


这道题用列表推导式,写一行语句就可以完成。即将这些数字生成一个列表,再求和。
print(sum())

加赛题:
找出1000以下(不包括1000)自然数中不含7的倍数且每位数字中均不含7的数之和。


同理,加赛题的参考答案如下:
def contain7(n): #判定数字中是否含有7
    while n:
      n, i = divmod(n, 10)
      if i == 7:
            return True
    return False
sum1 = 0
for i in range(1000):
    if i % 7 != 0 and not contain7(i):
      sum1 += i
print(sum1)
单行程序:
print(sum())

static/image/hrline/5.gif
本次练习给出正确答案的鱼油是:
DingRan, 不爱穿内裤, Lnan95,wei_Y,VVFock3r,jy02214772,tomopad, zooo, debi999,落殇飞羽,swingman8


只给出正赛题正确答案的鱼油是:
天才宝宝, a1104201,doudou_freefish,天元,碗碗的泡菜坛,wangguohui,kio,夏天的凤,ajforfun

本期优秀的是Lnan95,zooo


hldh214 发表于 2016-3-2 22:25:47

{:10_254:}

奈文魔尔 发表于 2016-3-5 21:55:41

支持~可惜赶不上这一期了,只能搭乘下一期的小练习~~

wenjun8888 发表于 2016-3-6 21:13:09

好久没来看了~~支持一下~

gong1225 发表于 2016-3-6 23:27:52

你好请教,求0到1000,每位数字中均不含7的数时,我用如下代码为啥没有返回值:
for i in range(0,15):
    if '7' in str(i)==False:
      print(i)

冬雪雪冬 发表于 2016-3-7 23:14:27

这样改一下,注意运算的优先级。
for i in range(0,15):
    if ('7' in str(i))==False:
      print(i)

冬雪雪冬 发表于 2016-3-7 23:15:42

比较正规的写法:
for i in range(0,15):
    if '7'not in str(i):
      print(i)

wangguohui 发表于 2016-3-8 10:13:56

有我,哈哈哈哈哈哈哈哈

番薯林 发表于 2016-3-9 08:43:30

{:10_256:}{:10_256:}{:10_256:}{:10_256:}

forevermask 发表于 2016-3-9 18:33:15

孤独的散像 发表于 2020-9-18 11:17:54

答案不是266333吗?
页: [1]
查看完整版本: 小练习结果揭晓: 找出1000以下自然数中3和5的倍数之和