caeser 发表于 2022-2-11 22:01:24

请教各位老师,为什么这个程序是死循环?

i = 1
while i <= 30:
    if (7 * i) % 2 == 1 and (7 * i) % 3 == 2 and (7 * i) % 5 == 4 and (7 * i) % 6 == 5 and (7*i) % 7 == 0:
      print('该阶梯的最终数量',7 * i, i)
      #break
    else:
      i = i + 1   

请问各位老师,为什么这个程序是死循环?只有加入break才能退出?

Twilight6 发表于 2022-2-11 22:01:25


因为你代码满足 if 条件后,只会进入 if 条件中,将不在进入 else

而循环条件 i 的数值改变只在 else 代码中,所以导致死循环

你需要在 if 中也对循环条件 i 的数值进行改变,或者将数值改变填写到 if-else 外

参考代码:

i = 1
while i <= 30:
    if (7 * i) % 2 == 1 and (7 * i) % 3 == 2 and (7 * i) % 5 == 4 and (7 * i) % 6 == 5 and (7*i) % 7 == 0:
      print('该阶梯的最终数量',7 * i, i)
      i = i + 1
    else:
      i = i + 1   


i = 1
while i <= 30:
    if (7 * i) % 2 == 1 and (7 * i) % 3 == 2 and (7 * i) % 5 == 4 and (7 * i) % 6 == 5 and (7*i) % 7 == 0:
      print('该阶梯的最终数量',7 * i, i)
    i = i + 1

YSW9527 发表于 2022-2-12 15:10:53

当满足了if条件后,else里面的语句就不会被执行了,所以i的值就一直是同一个,刚好i又小于30。一直满足while语句就变成死循环了{:10_279:}

caeser 发表于 2022-2-13 11:12:40

YSW9527 发表于 2022-2-12 15:10
当满足了if条件后,else里面的语句就不会被执行了,所以i的值就一直是同一个,刚好i又小于30。一直满足whil ...

谢谢
页: [1]
查看完整版本: 请教各位老师,为什么这个程序是死循环?