我如何 运行 条件语句 "only once" 以及每次更改时?

How do I run a conditional statement "only once" and every time it changes?

我可能会问一个简单的问题。我有一个 python 程序,每分钟 运行s。但是我想要一段代码只在条件改变时 运行 吗?我的代码如下所示:

# def shortIndicator():
a = int(indicate_5min.value5)
b = int(indicate_10min.value10)
c = int(indicate_15min.value15)
if a + b + c == 3:
  print("Trade posible!")
else:
  print("Trade NOT posible!")

# This lets the processor work more than it should.
"""run_once = 0  # This lets the processor work more than it should.
while 1:
    if run_once == 0:
        shortIndicator()
        run_once = 1"""

我 运行 它没有使用函数。但后来我每分钟都会得到一个输出。我试过 运行 它作为一个函数,当我启用注释代码时它有点像 运行s,而且处理使用更多。是否有更聪明的方法来做到这一点?

如果我理解正确的话,你可以将之前的输出保存到一个文件中,然后在程序开始时读取它,并且仅当之前的输出不同时才打印输出。

确实不清楚你的意思,但如果你只想在结果改变时打印通知,添加另一个变量以记住之前的结果。

def shortIndicator():
    return indicate_5min.value5 and indicate_10min.value10 and indicate_15min.value15

previous = None
while True:
    indicator = shortIndicator()
    if previous is None or indicator != previous:
        if indicator:
            print("Trade possible!")
        else:
             print("Trade NOT possible!")
    previous = indicator
    # take a break so as not to query too often
    time.sleep(60)

provious 初始化为 None 创建第三个状态,该状态仅在 while 循环第一次执行时为真;根据定义,结果不能与之前的结果相同,因为第一次确实没有之前的结果。

也许还注意到函数内部的布尔值 shorthand,这比将每个值转换为 int 并检查它们的总和更简单、更惯用。

我猜 time.sleep 是您一直在寻找的,以减少 运行 这段代码的负载,尽管问题的那部分仍然不清楚。

最后,检查可能的拼写。