如何跳出调用main函数的while死循环?Python break语句使用问题
问题原因
break 关键字的作用范围仅限其直接所在的循环/分支结构内部,你把break写在main()函数里,和外层的while True分属不同的作用域,无法直接跳出外层循环。
最优解决方案:让main函数返回状态标识
修改main()函数,当用户输入done时返回False,其他场景返回True,外层循环根据返回值判断是否终止,修改后的代码如下:
def left(): print("left") def right(): print("right") def main(): command = input ("Enter your command: ") if command == "left": left() if command == "right": right() if command == "done": # 返回False表示需要终止循环 return False # 其他情况返回True继续循环 return True while True: # 接收main的返回值,返回False就跳出循环 if not main(): break
其他可选方案(不推荐日常使用)
你也可以通过自定义异常抛出捕获的方式跳出循环,但这种方式属于用异常处理控制正常业务流程,不符合通用编码规范,仅做了解:
# 自定义终止标识异常 class DoneCommand(Exception): pass def left(): print("left") def right(): print("right") def main(): command = input ("Enter your command: ") if command == "left": left() if command == "right": right() if command == "done": raise DoneCommand() # 外层捕获异常终止循环 try: while True: main() except DoneCommand: pass
内容的提问来源于stack exchange,提问作者Aman George
相关产品推荐
相关产品推荐

