【问题标题】:Goto statement in python - what other way is there? [closed]python中的Goto语句-还有什么其他方法? [关闭]
【发布时间】:2015-08-07 18:30:38
【问题描述】:

我的程序有以下结构

  1. 程序截取屏幕截图 2、程序寻找条件a。如果不满足条件a,则需要返回第1点
  2. 程序查找条件 b。如果不满足条件b,则需要回到第1点
  3. 程序查找条件 c。如果条件 c 不满足,则需要回到第 1 点 ...等

大约有 20 个附加条件,当其中一个不满足时,程序应返回起点。使用 goto 语句可以轻松解决此问题。但是,在 Python 中,这不是一个选项。感谢任何建议如何优雅地实现。

【问题讨论】:

  • 请向我们展示您编写的代码,我们可以让您知道最合乎逻辑的方式。
  • 在某些情况下goto 和标签是一个很好的解决方案(或至少不比其他任何解决方案差),使用goto for 循环不是其中之一。你确实知道continue statement
  • 使用while 1:continue
  • 如果goto 还在你的编程工具箱中,你真的应该阅读official Python tutorial(任何现代编程语言的教程,真的)。

标签: python goto


【解决方案1】:

你应该给我们代码,或者至少是一个显示结构的例子。

也许你可以这样做:

take screenshot
condition = (condition a) and (condition b) and ... and (condition z)

while (not condition):
    take screenshot
    condition = (condition a) and (condition b) and ... and (condition z)

【讨论】:

  • 这与我想做的很接近,但是如果不满足条件 b,我不想编程来检查条件 c。它应该直接返回做另一个屏幕截图,并从第一个检查条件 a 开始重新启动。然后是 b,最后是 c,前提是前面的两个条件都为真。
  • 正如它所写的那样,它将按照您的意愿工作:带有and 的布尔表达式通过 Python 中的短路评估(也称为惰性评估)进行评估。因此,如果不满足 condition b,Python 将布尔表达式 condition 计算为 False,而不检查 condition c 的值(如果满足 condition b,程序将计算 condition c,等等......)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-02-25
  • 1970-01-01
  • 2012-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-26
相关资源
最近更新 更多