小香蕉2009 发表于 2019-7-31 17:14:46

求助:为什么不停的打印119啊?

a = 1
x = 7
while a<=100:

if(x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6==5) and (x%7==0):
   
   
    print('阶梯数是:',x,end='')
else:
      x = 7*(a+1)
      a +=1
print('不在限定范围内')

为什么不停的打印,阶梯数是119?

jackz007 发表于 2019-7-31 17:41:53

本帖最后由 jackz007 于 2019-7-31 17:45 编辑

      问题在这里:
else:
      x = 7*(a+1)
      a +=1
      这 2 条语句应该是无条件执行的,可是,却被放到了 else 后面,导致当 x = 119 的时候,无法更新下一个 x 值,从而陷入死循环。

      改成这样就好了:
a , x = 1 , 7
while a <= 100:
    if(x % 2 == 1) and (x % 3 == 2) and (x % 5 == 4) and (x % 6 == 5) and (x % 7 == 0):
      print('阶梯数是:' , x , end='')
    x = 7 * (a + 1)
    a += 1

huopokeai 发表于 2019-7-31 17:46:54

因为当找到满足条件的x之后,a就不再改变了,a一直符合小于等于100的条件,while循环就会一直执行

小香蕉2009 发表于 2019-8-1 09:20:08

jackz007 发表于 2019-7-31 17:41
问题在这里:

      这 2 条语句应该是无条件执行的,可是,却被放到了 else 后面,导致当 x = 11 ...

谢谢!
页: [1]
查看完整版本: 求助:为什么不停的打印119啊?