为什么我的 break 语句在 if 语句中不起作用,即使 print 语句有效?

杰克

我正在编写一个代码来找到前 n 个素数的乘积。

def num_primorial(n):
    print(str(n) + "---\n2")
    prime_count = 1
    product = 2
    i = 3
    while prime_count < n:
        is_prime = True
        for j in range(3, i, 2):
            if i % j == 0:
                print(str(i) + "****" + str(j))
                is_prime = False
                break
        if is_prime:
            print(i)
            product *= i
            prime_count += 1
            i+=2
    return product
    
print(num_primorial(5))

但是,在 if 语句中:

if i % j == 0:
   print(str(i) + "****" + str(j))
   is_prime = False
   break

即使打印语句正在工作并且正在循环,它也不会跳出 for 循环。

点击查看输出

有人可以告诉我这是什么问题吗?

PDHide

它正确退出,

由于while循环,for循环再次运行

您应该在 if 条件之后添加另一个中断以摆脱它,否则它会无限运行

当在 for 循环中使用 break 时,它仅从 for 循环中退出。你有一个永远不会退出的无限 while 循环,所以你一次又一次地进入 for 循环

在你的例子中 is_prime 总是假的所以计数永远不会改变

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章