为什么 "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。你应该在休伯特的回答上打勾,因为它正在解决你的问题。
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。你应该在休伯特的回答上打勾,因为它正在解决你的问题。