成成是我 发表于 2022-12-1 08:54:40

python 代码求助 循环嵌套

>>> day = 1
>>> while day <= 7:
>>>   while hour <= 8:
...         print("今天,我一定要坚持学习8个小时!")
...         hour += 1
...         if hour > 1:
...             break
...   # 位置1
...   day += 1
... # 位置2


问题1: break 语句执行之后,程序跳转到位置 1,如果hour += 1在day = 1之后呢?也是跳转到位置 1吗?
问题2:将while day <= 7改为while day <= 9,结果是不是打印8次?

lxping 发表于 2022-12-1 09:11:32

本帖最后由 lxping 于 2022-12-1 09:24 编辑

1、首先你的hour没有像day一样设置循环初始值
2、break只能跳出当前循环,如果触发 break 语句就是跳转到位置 “day += 1” 处,跟 “hour += 1”没有关系,“hour += 1”只是你内层循环的一个机制,可以使得循环能够在 “ hour > 8:”的情况下正常结束。如果你将“hour += 1”移到 "day=1"处,循环内的hour值将不会改变。
3、打印次数要看你设置的hour初始值,如果hour初始值设置为1之间,将while day <= 7改为while day <= 9,结果是打印8次day, hour = 1, 1
while day <= 9:
   while hour <= 8:
         print("今天,我一定要坚持学习8个小时!")
         hour += 1
         if hour > 1:
             break
   # 位置1
   day += 1
   # 位置2

今天,我一定要坚持学习8个小时!
今天,我一定要坚持学习8个小时!
今天,我一定要坚持学习8个小时!
今天,我一定要坚持学习8个小时!
今天,我一定要坚持学习8个小时!
今天,我一定要坚持学习8个小时!
今天,我一定要坚持学习8个小时!
今天,我一定要坚持学习8个小时!

成成是我 发表于 2022-12-1 10:32:02

lxping 发表于 2022-12-1 09:11
1、首先你的hour没有像day一样设置循环初始值
2、break只能跳出当前循环,如果触发 break 语句就是跳转到 ...

1,我试了一下,hour += 1的位置在day = 1下,还是在if hour > 1:上结果都一样,是不是他的位置在哪儿都可以
2,这道题的解析是无论多少层循环嵌套,break 语句和 continue 语句都只能作用于离它最近的那一层,可是离他最近的那一层不是while hour <= 8:这个吗?
3,您说的打印次数要看你设置的hour初始值,我将hour初始值改变结果并不影响最终的结果,所以break 是不是只跟day 的值有关系啊?

谢谢大神回复

lxping 发表于 2022-12-1 10:52:11

成成是我 发表于 2022-12-1 10:32
1,我试了一下,hour += 1的位置在day = 1下,还是在if hour > 1:上结果都一样,是不是他的位置在哪儿都 ...

我不是大神{:10_266:}
1、外层循环结束的条件是day>9,怎么样才能让day>9,就是day += 1使得每一次循环后day的值加1。
2、break 语句和 continue 语句都只能作用于离它最近的那一层,就是while hour <= 8:这个
3、要打印print语句首先需要进入外层循环(满足条件while day <= 9),然后进入内层(满足条件hour <= 8),只要有一个不满足了比如 day>9 或者 hour >8 了都不会打印了
4、break和day值没有任何关系,break中断的是内层循环(就是while hour <= 8:)

成成是我 发表于 2022-12-1 11:23:34

lxping 发表于 2022-12-1 10:52
我不是大神
1、外层循环结束的条件是day>9,怎么样才能让day>9,就是day += 1使得每一次循 ...

我懂了,感谢感谢{:5_108:}
页: [1]
查看完整版本: python 代码求助 循环嵌套