Eschborn 发表于 2023-1-13 18:40:39

求助!

请问,如何一次性退出多层循环?
(实际情况:做pygame的时候有多个窗口(不同时出现),有先后关系)
注:针对大部分情况,故不附代码

tommyyu 发表于 2023-1-13 18:48:02

try:
    while True:
      try:
            while True:
                try:
                  while True:
                        x = int(input('想要跳出几层循环:'))
                        if x == 1:   raise TypeError
                        elif x == 2: raise ZeroDivisionError
                        elif x == 3: raise ValueError
                except TypeError:
                  print('1')
      except ZeroDivisionError:
            print('2')
except ValueError:
    print('3')

isdkz 发表于 2023-1-13 18:48:46

本帖最后由 isdkz 于 2023-1-13 19:08 编辑

三种办法:

一、可以用抛出异常来实现

参考代码:
try:
    while True:
      while True:
             while True:
                print('直接退出多层循环')
                raise Exception
except:
    print('多层循环被退出了')

二、封装成函数,使用 return

参考代码:
def test():
    while True:
      while True:
            while True:
                print('直接退出多层循环')
                return
test()
print('多层循环已经被退出了')

三、利用循环的 else 语法和 continue 结合(这个需要慢慢消化,理解了循环的 else 用法就能理解为什么可以这样子了):

参考代码:
while True:
    while True:
      while True:
            print('直接退出多层循环')
            break
      else:
            continue
      break
    else:
      continue
    break
print('多层循环已经被退出了')
页: [1]
查看完整版本: 求助!