1到1000之间包含哪些不能被3,5或7整除的整数?

时间:2014-02-20 17:31:58

标签: python

我正在使用Python,有人可以告诉我这里的代码有什么问题吗?

def notdivisible():

    count =0
    for i in range(1,1001):

        while i%3 !=0 or i%5 !=0 or i%7 !=0:
            count+=1
            i+=1

    print (count)


notdivisible()

4 个答案:

答案 0 :(得分:6)

count = 0
for i in range(1,1001):
    if i%3 and i%5 and i%7:
        count += 1
print(count)

你不需要while循环,for负责增加i。

答案 1 :(得分:1)

sum(1 for i in range(1, 1001) if i%3 and i%5 and i%7)  

编辑:
我不确定究竟是什么问题;你可以根据需要使用“或”或“和”...

答案 2 :(得分:1)

只是一个不同的想法......

>>> x = range(1001)
>>> len(set(x) - set(x[::3]) - set(x[::5]) - set(x[::7]))
457

P.S。您的代码存在的问题与while一致:while应该是if,每个or都更改为and

答案 3 :(得分:0)

在你的while循环中,你有一个i+=1,这是你在for循环中使用的变量。这导致您跳过数字,可能是您的代码没有返回预期值的原因。

循环变量会在每次迭代时自动递增。您不必自己更新(除非您真正想要这样做)。