我有一个复杂的项目,我将尝试简化该项目的主要问题之一。因此有一个简化: 我们可以想象这样的while循环:
while(condition):
statement1
statement2
statement3
...
statementn
在此循环中有n条语句,每个语句可以是任何内容(函数,循环,if语句...),并且循环中有一个条件,我想在while循环之前检查此条件。因为如果自从第一条语句以来条件是受尊重的,我必须等到一会儿结束才能检查条件是否受尊重...所以我的问题是可以在循环之前检查条件而无需检查功能whileloop的每个语句之间?
因为实际上,这是有效的……但是代码不清楚,我真的认为通过这种方式我们可以污染我的代码,并且我想更有效地使用漂亮的代码,因此如何解决我的问题而又没有这个约束?
PS:我想到了像JavaScript这样的事件监听器,但是我在python上发现了关于它们的不良信息,但是如果有一个像事件监听器那样的工具,那就太好了!
答案 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