立即检查是否符合条件

2024-09-30 01:24:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个复杂的项目,我会尽量简化项目的主要问题之一。所以这里有一个简化: 我们可以想象这样一个while循环:

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

在这个循环中有n个语句,每个语句可以是任意的(function,loop,if statement,…),循环中有一个条件,这个条件我想在while循环之前检查一下。因为如果条件是从第一个语句开始的尊重,我必须等到最后一段时间来检查条件是否是尊重。。。所以我的问题是,是否可以在循环前检查条件,而不必在whileloop的每个语句之间都有一个check函数

因为事实上,这是工作。。。但是代码不清楚,我真的认为这样我们污染了我的代码,我想用一个漂亮的代码更高效地工作,那么没有这个约束我怎么解决我的问题呢

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


Tags: 项目代码事件function语句condition条件监听器
3条回答

听起来像是要将所有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异常定义为一个类,并在手动定义的check(a)函数中引发它。然后可以将整个while循环包装在try-except块中并捕获异常

我不知道“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

我不确定我是否正确理解你,但我会这么做:

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

相关问题 更多 >

    热门问题