我有一个生成三角数的代码,计算每个三角数的除数,并打印出3列,其中第一列是输入数,第二列是三角数,第三列是每个三角形的除数数。我希望一旦找到一个除数大于或等于10的三角数,此代码就停止。我在第二个“ if”语句下设置了该条件,但是“ break”实际上并没有中断while循环并最终导致无限循环。 “ break”的位置是否错误?
n=1
while True:
for num in range(n,n+1):
divisors = []
triangle_number = num*(num+1)//2
for divisor in range(1, triangle_number+1):
if triangle_number%divisor == 0:
divisors.append(divisor)
if len(divisors) >= 10:
print(num, end = '\t')
print(triangle_number, end = '\t')
print(len(divisors), "\t", ",".join(str(div )for div in divisors))
break
else:
n+=1
答案 0 :(得分:0)
我认为中断只会停止for循环,而不是代码中的while循环。
答案 1 :(得分:0)
最简单的是:
n=1
while len(divisors) < 11:
for num in range(n,n+1):
答案 2 :(得分:0)
您可以使用flag
变量来控制外部循环。查看此代码并尝试。
n=1
flag = True
while flag is True:
for num in range(n,n+1):
divisors = []
triangle_number = num*(num+1)//2
for divisor in range(1, triangle_number+1):
if triangle_number%divisor == 0:
divisors.append(divisor)
if len(divisors) >= 10:
print(num, end = '\t')
print(triangle_number, end = '\t')
print(len(divisors), "\t", ",".join(str(div )for div in divisors))
flag = False
break
else:
n+=1
答案 3 :(得分:0)
Break停止在Python中执行最内部的循环。如果是嵌套循环,则必须由程序处理。
对于上面的代码,中断使执行脱离for循环,并继续执行while循环。
用于处理这种情况的示例代码。
break_flag = False
while True:
while True:
if some_condition:
break_flag = True
break
if break_flag:
break