我正在使用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()
答案 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循环中使用的变量。这导致您跳过数字,可能是您的代码没有返回预期值的原因。
循环变量会在每次迭代时自动递增。您不必自己更新(除非您真正想要这样做)。