立即检查病情是否得到尊重

时间:2019-05-17 20:48:59

标签: python events

我有一个复杂的项目,我将尝试简化该项目的主要问题之一。因此有一个简化: 我们可以想象这样的while循环:

while(condition):
     statement1
     statement2
     statement3
     ...
     statementn

在此循环中有n条语句,每个语句可以是任何内容(函数,循环,if语句...),并且循环中有一个条件,我想在while循环之前检查此条件。因为如果自从第一条语句以来条件是受尊重的,我必须等到一会儿结束才能检查条件是否受尊重...所以我的问题是可以在循环之前检查条件而无需检查功能whileloop的每个语句之间?

因为实际上,这是有效的……但是代码不清楚,我真的认为通过这种方式我们可以污染我的代码,并且我想更有效地使用漂亮的代码,因此如何解决我的问题而又没有这个约束?

PS:我想到了像JavaScript这样的事件监听器,但是我在python上发现了关于它们的不良信息,但是如果有一个像事件监听器那样的工具,那就太好了!

3 个答案:

答案 0 :(得分:1)

听起来您想将所有if-then-break语句整理到一个处理a值的“检查”功能中。为此,您可以使用例外:

import random

class ItIsFiveException(Exception): pass

def check(a):
  if a == 5:
    raise ItIsFiveException

try:
  a = 0
  while(a != 5):
    a = random.randint(1,5); check(a)
    a = random.randint(1,5); check(a)
    a = random.randint(1,5); check(a)
    a = random.randint(1,5); check(a)
except ItIsFiveException:
  print("I saw a five!")

您只需要将自己的python Exception定义为一个类,然后在您手动定义的check(a)函数中引发它即可。然后,您可以将整个while循环包装在try-except块中,并捕获异常。

答案 1 :(得分:0)

我不确定我是否理解正确,但这就是我要做的:

flag = False
while not flag:
    for i in range(4):
        a = random.randint(1, 5)
        if a == 4:
            flag = True
            break

答案 2 :(得分:0)

我不确切知道“ a”会发生什么,但是如果您可以链接条件,并且在第一个条件失败时会停止

while(checkRandom()):
   ...
def checkRandom(a):
   return random.randint(1,5) == 5 and random.randint(1,5)....

如果您可以循环生成随机值,则可以使用

while(a!=5):
  for item in range(1, 5):
    a=random.randint(1,5)
    if a==5:
       break