蟒蛇。结构不正确的while循环?

时间:2020-04-21 04:49:49

标签: python

我有一个生成三角数的代码,计算每个三角数的除数,并打印出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

4 个答案:

答案 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