鱼C论坛

 找回密码
 立即注册
查看: 1784|回复: 11

[已解决]求问,python初学

[复制链接]
发表于 2021-5-11 15:52:55 | 显示全部楼层 |阅读模式

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

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

x

while True:
    while True:
        break
        print(1)
    print(2)
    break
print(3)

因为 break 只能跳出一层循环

第一个break不是已经跳出循环了,为什么不打印1,第二个break为什么就不会跳出循环了,为什么还可以打印2?
好纠结
最佳答案
2021-5-11 17:10:16
本帖最后由 肖-肖 于 2021-5-11 17:13 编辑
金耳钩 发表于 2021-5-11 16:20
非常感谢大佬的回答,我还是有个地方不是很清楚,就是第二个while True的循环体不应该只有break吗,为什 ...


print(1)为什么是和break是同一个循环的?
因为它们的缩进是一样的,所以是那两句再内部的while循环中。

不是顺序执行吗?
是顺序执行,但不是break了嘛,跳出去了,也就是后边的代码print(1)没有执行到,看我画的箭头,亲
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-5-11 15:59:30 | 显示全部楼层
分析如下图所示(超详细):
hd.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2021-5-11 16:08:48 | 显示全部楼层
注意看缩进,python是很注意缩进的一门编程语言

while True:  # 第1层
    while True:  # 第2层
        break # 看缩进,对应第2层
        print(1)
    print(2)
    break # 看缩进,对应第1层
print(3)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2021-5-11 16:11:21 | 显示全部楼层
程序执行到第一个break的时候,break所在的当前这一层的循环被终结了,同一层循环的print(1)语句在break后面,就被跳过了。而一个break只能管一层循环,所以外面这一层循环还在执行。
下一句是print(2),然后再遇到break,跳出当前这一层循环。所以先打印再跳出。
这种逻辑并非难以理解的,主要思路不能乱,否则后面复杂度更大的代码就会错漏百出了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2021-5-11 16:20:18 | 显示全部楼层
肖-肖 发表于 2021-5-11 15:59
分析如下图所示(超详细):

非常感谢大佬的回答,我还是有个地方不是很清楚,就是第二个while True的循环体不应该只有break吗,为什么还有print(1),他不是顺序执行的吗?
谢谢大佬了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-11 16:34:15 | 显示全部楼层
笨鸟学飞 发表于 2021-5-11 16:08
注意看缩进,python是很注意缩进的一门编程语言

while True:  # 第1层

非常感谢你的回答,可是我把print(1)的缩进设置成和print(2)一样了,应该最后打印的是1 2 3,为什么最后打印的只有3?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-11 16:37:57 | 显示全部楼层
Hoiste 发表于 2021-5-11 16:11
程序执行到第一个break的时候,break所在的当前这一层的循环被终结了,同一层循环的print(1)语句在break后 ...

非常感谢你的回答,print(1)为什么是和break是同一个循环的,不是顺序执行吗?我是初学,可能有地方理解不对,希望大佬可以指导一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-11 17:06:38 | 显示全部楼层
金耳钩 发表于 2021-5-11 16:37
非常感谢你的回答,print(1)为什么是和break是同一个循环的,不是顺序执行吗?我是初学,可能有地方理 ...

是这样的,break直接就跳出循环了,循环里break后面的代码就不会执行了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2021-5-11 17:10:16 | 显示全部楼层    本楼为最佳答案   
本帖最后由 肖-肖 于 2021-5-11 17:13 编辑
金耳钩 发表于 2021-5-11 16:20
非常感谢大佬的回答,我还是有个地方不是很清楚,就是第二个while True的循环体不应该只有break吗,为什 ...


print(1)为什么是和break是同一个循环的?
因为它们的缩进是一样的,所以是那两句再内部的while循环中。

不是顺序执行吗?
是顺序执行,但不是break了嘛,跳出去了,也就是后边的代码print(1)没有执行到,看我画的箭头,亲
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2021-5-11 17:12:22 | 显示全部楼层
金耳钩 发表于 2021-5-11 16:37
非常感谢你的回答,print(1)为什么是和break是同一个循环的,不是顺序执行吗?我是初学,可能有地方理 ...
while True:               #往下  [循环0]
    while True:           #往下  [循环1]
        break             #跳出循环体-- [循环1]
        print(1)          #          |
    print(2)              #   <--------  然后继续往下
    break                 #跳出循环体--|  [循环0]
print(3)                  # <---------|         
画图~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2021-5-11 17:15:20 | 显示全部楼层

非常感谢你的回答,我整明白了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2021-5-11 17:20:51 | 显示全部楼层
金耳钩 发表于 2021-5-11 17:15
非常感谢你的回答,我整明白了

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-15 20:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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