Bozhou 发表于 2021-8-11 16:54:15

关于循环嵌套

day = 1
hour = 1
while day <= 7:
    while hour <= 8:
      print('老子今天一定学习八个小时')
      hour += 1
      if hour > 1:
            break
    day += 1

这个代码打出的字符串为7个,而如果将if hour > 1:break删除,字符串仍为七个。这是为什么啊。

青出于蓝 发表于 2021-8-11 16:58:41

因为day大于7就不循环了

回忆。 发表于 2021-8-11 19:07:30

未修改前,每次进入内循环执行一次跳出,因为外层循环条件day小于等于7,所以进入7次内循环,共有七条消息打印
修改后,在day=1时进入内循环,内循环执行8次后hour=9终止,当再次判断内循环条件时因hour=9,所以内循环不再执行,直到程序结束,共有8条消息打印

3236654291 发表于 2021-8-11 22:17:49

break没意义吧

3236654291 发表于 2021-8-11 22:18:51

break之后又到了while day <= 7:
又进入了while hour <= 8:
又print()
我感觉没有意义

临时号 发表于 2021-8-11 23:03:38

在第一次循环中,hour = 1,在第二个循环中在if hour > 1:前有一个hour += 1,此时hour = 2,所以break一定会执行,所以会通过第一个循环执行7遍,而将if hour > 1: break删除后,会执行第二个循环7遍,而后面hour = 9了,所以就不会进第二个循环了.

Bozhou 发表于 2021-8-12 12:10:25

回忆。 发表于 2021-8-11 19:07
未修改前,每次进入内循环执行一次跳出,因为外层循环条件day小于等于7,所以进入7次内循环,共有七条消息 ...

谢谢大佬{:10_254:}
页: [1]
查看完整版本: 关于循环嵌套