理解带有嵌套“IF”语句的“FOR”循环的结果

问题描述 投票:0回答:2

我有这段代码应该确定

2
和输入
num
之间的素数数量:

def count_primes(num):
    i = 0

    for item in range(2, num):           
        for n in range(2, item):
            if item % n == 0:
                break
                
        i += 1
            
    return i

这不起作用,因为每次通过外循环都会发生

i += 1
。我对如何组合
if
for
以使逻辑按照我想要的方式工作感到困惑。

当完整的内循环(

i += 1
)运行而没有找到for n in range(2, item):
任何
实例时,如何才能使item % n == 0
发生?

python loops
2个回答
2
投票

您可以将

else
for
循环一起使用。 仅当
else
循环耗尽时,即在未中断的情况下完成时,才会执行
for
下的代码块。

for i in range(10):
# logic for each iteration
else:
# the code here will be executed  only if the loop finished 10 successful iterations 

1
投票

这样做:

def count_primes(num):
    i = 0
    for item in range(num):
        if item <= 1:
            continue
        for n in range(2, item):
            if item % n == 0:
                break
        else:
            i += 1
    return i
© www.soinside.com 2019 - 2024. All rights reserved.