为什么 "break" 不停止这个 for 循环?

Why doesn't "break" stop this for loop?

for i in range(999*999):
    if ispalindrome(999*999-i)==True and isprime(999*999-i) == False:
        factors = listfactors(999*999-i)
        for j in range(len(factors)):
            if len(str(factors[j])) == 3 and len(str(int((999*999-i)/factors[j])))==3:
                print(999*999-i)
                quit()

这是我的代码。我想检查这些条件是否成立,然后在找到第一个条件后停止,但它会在控制台中打印出所有符合条件的数字。我的想法是它应该在获得第一个数字时停止

编辑:我尝试使用 quit() 而不是 break,但这仍然不起作用,我不明白这一点。我确实尝试过使用两个 break 语句,但那没有用。请问是不是我写错了

要退出双循环,请改用函数并从函数中 return。中断仅适用于最内层的循环。

示例:

def whatever():
    for i in range(999 * 999):
        if ispalindrome(999 * 999 - i) and not isprime(999 * 999 - i):
            factors = listfactors(999 * 999 - i)
            for j in factors:
                if len(str(j)) == 3 and len(str(int((999 * 999 - i) / j))) == 3:
                    return 999*999-i

print(whatever())

函数break只会出1级。做你想做的事情的一种更简单的方法是使它成为休伯特所说的功能。如果你真的不想使用一个函数,你可以创建另一个变量 continue 并将其设置为 True 并检查它是否在每个级别都不是 True 如果是则中断,然后在找到后将其设置为 False回答,这样当它被发现时它会退出每个循环,因为 continue 不再是 True。

希望对您有所帮助。

P.S。你应该在休伯特的回答上打勾,因为它正在解决你的问题。