applekiller 发表于 2022-12-25 16:52:03

break的循环问题

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

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

请大神不吝赐教!谢谢!

傻眼貓咪 发表于 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 语句

applekiller 发表于 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仍然是循环体的一部分。

请大神不吝赐教!

傻眼貓咪 发表于 2022-12-25 19:31:58

applekiller 发表于 2022-12-25 19:13
我个人觉得您写的代码有个悖论。设定x 20下的break语句,break根本就没起到验证break的作用。
我写了 ...

当然没有人会这样写,只是要让你明白,既然已经明白,就请设最佳解答谢谢。

wyhpylc 发表于 2022-12-25 19:33:09

好家伙,一看帖主就是个理科生 + 强迫症{:10_256:}

傻眼貓咪 发表于 2022-12-25 19:35:01

wyhpylc 发表于 2022-12-25 19:33
好家伙,一看帖主就是个理科生 + 强迫症

哈哈哈 {:10_269:}

jackz007 发表于 2022-12-25 19:37:06

本帖最后由 jackz007 于 2022-12-25 19:41 编辑

       break 退出的位置在 while 语句块以下(不包括 else)缩进位置与 while 相同的下一条语句。
    while :
      <语句1>
      break
      <语句2>
    else :
      <语句3>
    <语句4>      # 这是 break 退出循环后,将要执行的第一条语句

applekiller 发表于 2022-12-25 20:15:30

jackz007 发表于 2022-12-25 19:37
break 退出的位置在 while 语句块以下(不包括 else)缩进位置与 while 相同的下一条语句。

谢谢楼上,现搞清楚了。谢谢!!!
页: [1]
查看完整版本: break的循环问题