鱼C论坛

 找回密码
 立即注册
查看: 54|回复: 9

第17讲的最后一段代码中的break跳出循环,为什么还要打印7次内层循环的print()

[复制链接]
发表于 前天 14:11 | 显示全部楼层 |阅读模式

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

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

x
break 不是直接跳出内层循环,到了外层的while了么
那样的话就没有print了啊,只有一个day += 1了, 为什么视频里还说有print 然后继续打印7次呢
day = 1
hour = 1
while day <= 7:
    while hour <= 8:
        print("今天一定学习8个小时")
        hour += 1
        if hour >1:
            break
    day += 1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 前天 14:17 | 显示全部楼层
看起来代码片段有些不完整,但我可以猜测您的问题。通常,`break`语句是用来立即终止当前循环的。如果`break`在内层循环中,它将只跳出内层循环,并继续执行外层循环之后的代码。

从您的描述来看,问题是出在外层循环是`while day:`。如果`print()`语句在内层循环的`while`中,而`break`也在其中,`print()`只会在`break`发生之前执行。此外,外层`while`循环没有明确的条件,也可能在满足条件下继续执行。

如果您能提供完整代码,我能给出更精确的解释。不过,从目前的情况来看,可能是因为每次`day += 1`后又重新进入了内层的循环,导致`print()`执行多次。确保理解`break`只终止它所在的循环级别,而不是外层的循环。

希望这能解释您遇到的问题!如果仍有疑惑,欢迎提供完整代码以便更好地解答。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 前天 15:23 | 显示全部楼层
FishC 发表于 2024-11-19 14:17
看起来代码片段有些不完整,但我可以猜测您的问题。通常,`break`语句是用来立即终止当前循环的。如果`brea ...

有点不太懂啊,这是小甲鱼视频[知识点备忘] 第017讲:了不起的分支和循环(IV)中最后一段视频的完整代码,break直接跳出内层循环的话,那内层循环 while hour<=8 中的print()不是不执行么,那就是只打印1次啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 前天 15:23 | 显示全部楼层
leizhenzi23 发表于 2024-11-19 15:23
有点不太懂啊,这是小甲鱼视频 第017讲:了不起的分支 ...


根据您给出的信息,我假设完整的代码结构可能是这样的:
day = 1
hour = 1

while day <= 7:
    print(f"第 {day} 天")
    while hour <= 10:
        print(f"第 {hour} 小时")
        if hour == 5:
            break
        hour += 1
    
    day += 1
    hour = 1  # 重置hour,以便外层循环继续时,内层循环能从hour=1开始

让我们逐步分析这段代码:

1. 外层循环 `while day <= 7:` 表示这一段代码总共会运行7天。
2. 在每一天的循环中,`hour`从1开始循环到10。
3. `if hour == 5: break` 在小时为5的时候,退出内层`while hour`循环。
4. 退出内层循环后,代码执行到 `day += 1` 处,使外层循环进入下一天。
5. `hour = 1` 在外层的每次循环结束时重设 `hour`,这样可以确保每进入新的一天,`hour`从1开始。

因此,尽管内层循环因为`break`而在小时到5时结束,每天还是会有一次`print`,重新计数进入下一天,这导致了7次打印外层循环的内容,而不是继续小时的打印。

希望这个解释能帮助您理解视频中提到的如何打印7次的问题。若有其他疑问,请随时提问!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 前天 15:26 | 显示全部楼层
day = 1
hour = 1
while day <= 7:
    while hour <= 8:
        print("今天一定学习8个小时")
        hour += 1
        if hour >1:
            break

    day += 1
为什么打印了7次呢,break不是跳出了循环么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 前天 15:26 | 显示全部楼层
leizhenzi23 发表于 2024-11-19 15:26
day = 1
hour = 1
while day


非常抱歉,我需要完整的代码来更好地解释其中的逻辑。不过,我可以根据通常的循环控制结构给出一些一般性的解释。假设您有类似下面这样的一段代码:
day = 1

while day <= 7:
    hour = 1
    while hour <= 24:
        print(f"Day {day}, Hour {hour}")
        
        if some_condition:
            break  # This breaks out of the inner while loop, not the outer while loop.

        hour += 1  # Increment hour

    day += 1  # Increment day

在这段代码中,`break`语句用于跳出内层循环`while hour <= 24`。当`break`被执行时,内层循环会被打断,程序将继续执行外层循环的剩余部分。

具体到您提到的问题,假设在`inner`循环中用了`break`,这意味着即便`hour`刚开始,比如在`hour = 1`时条件满足而`break`触发,内层循环会跳出,但`day`的循环依然会继续,所以它会打印7次(如果7天),这是因为外层`while day <= 7`继续执行。

如果您能补充完整的代码,我会很乐意为您进一步分析。希望这些解释有助于您理解`break`在嵌套循环中的行为。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 前天 17:15 | 显示全部楼层
本帖最后由 jackz007 于 2024-11-19 22:52 编辑
day = 1
hour = 1
while day <= 7:
    while hour <= 8:
        print("今天一定学习8个小时")
        hour += 1
        if hour > 1:
            break
    day += 1

        这个嵌套循环比较特殊,由于内循环里有这一句:
        if hour > 1:
            break
        if 的条件 hour > 1 恒定为 True,所谓的内循环每次只能执行 1 次,处于名存实亡的状态,在循环过程中,day 和 hour 同步改变,而 day 率先到达循环终点 (day <= 7),所以,外循环实际控制着 print() 语句的执行次数,最终会打印 7 次 "今天一定学习8个小时"。

        改写一下,这个等效代码应该更能说明问题:
day = 1
hour = 1
while day <= 7:
    if hour <= 8:
        print("今天一定学习8个小时")
        hour += 1
    day += 1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2 小时前 | 显示全部楼层
jackz007 发表于 2024-11-19 17:15
这个嵌套循环比较特殊,由于内循环里有这一句:

        if 的条件 hour > 1 恒定为 True, ...

其实我实在想是不是 break直接就跳出了内循环,内循环的语句就不执行了,那样的话 就只打印一次,但是吧,现在是打印了7次,相当于每次都还要进到内循环中一次,进7次
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2 小时前 | 显示全部楼层
还有一个问题就是,代码中去掉内循环的if条件,改成下边这样,为什么打印8次,不是应该7次么,外循环只有7次啊:
day = 1
hour = 1
while day <= 7:
    while hour <= 8:
        print("今天一定学习8个小时")
        hour += 1
    day += 1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 1 小时前 | 显示全部楼层
leizhenzi23 发表于 2024-11-21 13:06
还有一个问题就是,代码中去掉内循环的if条件,改成下边这样,为什么打印8次,不是应该7次么,外循环只有7 ...

        因为在 day = 1 的那次循环中,内循环会循环 8 次。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-21 15:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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