结合“if”和“while”,当“if”条件满足时如何跳出所有嵌套循环?
Posted
技术标签:
【中文标题】结合“if”和“while”,当“if”条件满足时如何跳出所有嵌套循环?【英文标题】:Combined "if" and "while", how to break out of all nested-loops when "if" condition fulfilled? 【发布时间】:2022-01-20 11:16:33 【问题描述】:如果条件满足,我如何编写 Python 脚本以将 while
s 与 if
s 和 break
整个嵌套循环结合起来?
我已阅读其他主题,但无法使脚本正常工作...
当满足if
条件时,如何编写此脚本以退出或中断所有嵌套循环?
脚本:
breaker = False
while True:
...commands...
if ... :
...commands...
if ... :
...commands...
while True:
...commands...
if ... :
if ... :
breaker = True
break # ...to exit all loops
i += 1
j -= 1
if breaker:
break
...continue script here if `break`
【问题讨论】:
将所有这些放在一个函数中,然后执行return
。
甚至在多个函数中。如此嵌套的代码很难阅读或推理。
如果我用函数和返回来写这个,会正常工作吗?
【参考方案1】:
对于每个 if 语句,您需要用一个 else 来关闭它,每个人都需要一个,否则我认为代码不会起作用,最后一个 (j-=1) 我认为它必须位于您制作的最后一个(如果是断路器:)代码。
【讨论】:
【参考方案2】:问题的根本原因是糟糕的源代码设计(https://refactoring.guru/smells/long-method 中描述的“难闻气味”)。根据经验:不要在一个函数中使用超过一个/两个嵌套条件(即while
、if
、until
,...)。尝试重构您的代码,例如显示在 Martin Fowler 的书 (https://martinfowler.com/books/refactoring.html) 或许多优秀教程中(例如 https://refactoring.guru/extract-method)。
您会发现这将简化您的生活 - 您可以在函数中使用 return
而不是某些 break 语句。
【讨论】:
以上是关于结合“if”和“while”,当“if”条件满足时如何跳出所有嵌套循环?的主要内容,如果未能解决你的问题,请参考以下文章