我有一个复杂的项目,我将尝试简化项目的一个主要问题。这里有一个简化:我们可以想象这样一个while循环:
while(condition):
statement1
statement2
statement3
...
statementn在这个循环中有n个语句,每个语句都可以是任意的(函数,循环,if语句,.)在循环中有一个条件,这个条件我想在while循环执行之前检查它。因为如果条件是尊重的,从第一条语句开始,我必须等到时间结束才能检查条件是否尊重.那么,我的问题是,在循环之前是否可以检查条件,而不需要在时间序列的每个语句之间设置检查函数?
因为事实上,这是工作..。但是代码不清楚,我真的认为这样我们污染了我的代码,我想更高效地工作,用一个漂亮的代码,那么我如何解决我的问题而没有这个约束呢?
PS:我想到了像javascript这样的事件侦听器,但是我在python上发现了关于它们的糟糕信息,但是如果有一个类似事件侦听器的工具,那就太棒了!
发布于 2019-05-17 21:35:06
听起来,您想要将所有if-然后中断语句清理成一个处理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异常定义为一个类,并在手动定义的check(a)函数中引发它。然后,您可以将整个while循环包装在一个try-除了块中,并捕获异常。
发布于 2019-05-17 20:58:38
我不确定我是否理解你,但我会这样做:
flag = False
while not flag:
for i in range(4):
a = random.randint(1, 5)
if a == 4:
flag = True
break发布于 2019-05-17 21:10:32
我不知道"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:
breakhttps://stackoverflow.com/questions/56193383
复制相似问题