检查python中的条件后重复通知语句

时间:2014-10-27 05:16:27

标签: python

我正在研究一个小概念验证并使用python来说明这个想法。这个想法是程序将在循环中运行并将检查输入。现在,如果输入低于阈值,则发送通知。但我试图以4秒的间隔限制通知。这就是我用逻辑或一些语法失去的地方。无论哪种方式它正在做一些意想不到的事情

1:继续输入0,它将显示以下阈值消息,直到达到4秒标记然后它只在一行中打印出4次消息。我希望他们每4秒钟后显示一次。这个想法是(A)输入可能在4秒内改变并且通知切换。 (B)我希望每当脚本达到条件时,如果weightIn<则通知将播放作为提醒,每次重复4秒。 0.5 ..如果是,那么通知在第一次发送后4秒后就会消失

很抱歉,如果我试着解释一下。我是python的新手

import threading
def main():
        while True:
                weightIn = float(input("Get value: "))
                threshold = .5

                def operation():
                        if weightIn < 0.5:
                                #send notification at an interval of 4 sec
                                threading.Timer(4.0, operation).start()
                                print("Below weight threshhold...send notification")
                        else:
                                print("You are good")

                if threshold is not None:
                    operation()

main()

1 个答案:

答案 0 :(得分:1)

首先避免在循环中声明函数。然后问问自己,一个对象是否合适,因为它正确地包含了状态属性。

但对于算法部分,它很简单(如果我正确理解了问题......)。存储上次通知的时间戳,如果超过4秒,则发送一个新通知。在伪代码中:

last_notification_time = 0
threshold = 0.5
loop:
    weighIn = get_new_value()
    if weightIn < threshold:
        time = get_time_in_seconds()
        if (time > last_notification_time + 4):
            last_notification_time = time
            send_notification()
    # actual processing

在Python中,它看起来像:

#import time

def main():
    last_notification_time = 0
    threshold = 0.5
    while True:
        weighIn = float(input("Get value: "))
        if weightIn < threshold:
            cur_time = time.time()
            if (cur_time > last_notification_time + 4):
                last_notification_time = time
                print("Below weight threshhold...send notification")
        # actual processing

main()