鱼C论坛

 找回密码
 立即注册
查看: 3342|回复: 4

[已解决]python 代码求助 循环嵌套

[复制链接]
发表于 2022-12-1 08:54:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
>>> 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次?
最佳答案
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个小时!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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个小时!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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 的值有关系啊?

谢谢大神回复
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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


我不是大神
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:)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

我懂了,感谢感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-24 12:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表