鱼C论坛

 找回密码
 立即注册
查看: 3070|回复: 7

[已解决]break的循环问题

[复制链接]
发表于 2022-12-25 16:52:03 | 显示全部楼层 |阅读模式

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

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

x
请问:当执行break时,是会跳到位置1还是位置2?按小甲鱼讲的,else不就是循环体外的语句了吗?是不是就应该跳到位置1吗?

XXXX
  while ...:
    break
  else:
    位置1
位置2
XXXX

请大神不吝赐教!谢谢!
最佳答案
2022-12-25 19:31:58
applekiller 发表于 2022-12-25 19:13
我个人觉得您写的代码有个悖论。设定x 20下的break语句,break根本就没起到验证break的作用。
我写了 ...


当然没有人会这样写,只是要让你明白,既然已经明白,就请设最佳解答谢谢。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-12-25 16:55:33 | 显示全部楼层
本帖最后由 傻眼貓咪 于 2022-12-25 17:05 编辑

while ... else ... 语句,当 while 不是以 break 形式退出循环时(意思就是完成所有循环),则触发 else 语句。
x = 0
while x < 10:
    if x > 20:
        break
    x += 1
else:
    print("执行 else 语句")
执行 else 语句
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-12-25 19:13:55 | 显示全部楼层
傻眼貓咪 发表于 2022-12-25 16:55
while ... else ... 语句,当 while 不是以 break 形式退出循环时(意思就是完成所有循环),则触发 else  ...


我个人觉得您写的代码有个悖论。设定x<10,再与20比大小,根本不可能执行x > 20下的break语句,break根本就没起到验证break的作用。
我写了两个验证代码进行对比。
第一段:执行结果:9 位置2
x = 1

while x < 10:
    print(x)
    x += 1
    if x == 9:
        break
else:
    print(x, "位置1")
print(x, "位置2")

第二段代码:执行结果:10 位置1
x = 1

while x < 10:
    print(x)
    x += 1
else:
    print(x, "位置1")

我觉得这说明:else仍然是循环体的一部分。

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

使用道具 举报

发表于 2022-12-25 19:31:58 | 显示全部楼层    本楼为最佳答案   
applekiller 发表于 2022-12-25 19:13
我个人觉得您写的代码有个悖论。设定x 20下的break语句,break根本就没起到验证break的作用。
我写了 ...


当然没有人会这样写,只是要让你明白,既然已经明白,就请设最佳解答谢谢。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-25 19:33:09 | 显示全部楼层
好家伙,一看帖主就是个理科生 + 强迫症
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-25 19:35:01 | 显示全部楼层
wyhpylc 发表于 2022-12-25 19:33
好家伙,一看帖主就是个理科生 + 强迫症

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

使用道具 举报

发表于 2022-12-25 19:37:06 | 显示全部楼层
本帖最后由 jackz007 于 2022-12-25 19:41 编辑

       break 退出的位置在 while 语句块以下(不包括 else)缩进位置与 while 相同的下一条语句。
    while :
        <语句1>
        break
        <语句2>
    else :
        <语句3>
    <语句4>      # 这是 break 退出循环后,将要执行的第一条语句
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-12-25 20:15:30 | 显示全部楼层
jackz007 发表于 2022-12-25 19:37
break 退出的位置在 while 语句块以下(不包括 else)缩进位置与 while 相同的下一条语句。

谢谢楼上,现搞清楚了。谢谢!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-25 05:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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