首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >检查一项条件是否立即得到尊重

检查一项条件是否立即得到尊重
EN

Stack Overflow用户
提问于 2019-05-17 20:48:59
回答 3查看 45关注 0票数 0

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

代码语言:javascript
复制
while(condition):
     statement1
     statement2
     statement3
     ...
     statementn

在这个循环中有n个语句,每个语句都可以是任意的(函数,循环,if语句,.)在循环中有一个条件,这个条件我想在while循环执行之前检查它。因为如果条件是尊重的,从第一条语句开始,我必须等到时间结束才能检查条件是否尊重.那么,我的问题是,在循环之前是否可以检查条件,而不需要在时间序列的每个语句之间设置检查函数?

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

PS:我想到了像javascript这样的事件侦听器,但是我在python上发现了关于它们的糟糕信息,但是如果有一个类似事件侦听器的工具,那就太棒了!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-05-17 21:35:06

听起来,您想要将所有if-然后中断语句清理成一个处理a值“检查”的函数。为此,您可以使用例外情况:

代码语言:javascript
复制
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-除了块中,并捕获异常。

票数 1
EN

Stack Overflow用户

发布于 2019-05-17 20:58:38

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

代码语言:javascript
复制
flag = False
while not flag:
    for i in range(4):
        a = random.randint(1, 5)
        if a == 4:
            flag = True
            break
票数 0
EN

Stack Overflow用户

发布于 2019-05-17 21:10:32

我不知道"a“到底会发生什么,但是如果你能锁定条件,在第一个条件失败时会停止。

代码语言:javascript
复制
while(checkRandom()):
   ...
def checkRandom(a):
   return random.randint(1,5) == 5 and random.randint(1,5)....

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

代码语言:javascript
复制
while(a!=5):
  for item in range(1, 5):
    a=random.randint(1,5)
    if a==5:
       break
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56193383

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档