Из API я получаю данные. Он возвращает два значения: 1 и -1. Я получаю одни данные в секунду и последовательно 1 или -1.
Что я хочу, так это то, что когда данные становятся равными 1, вы выполняете действие только один раз, а когда они достигают -1, всегда выполняйте одно и то же действие один раз.
Моя проблема в том, что на данный момент я не могу заставить действие произойти только один раз. Действие повторяется до тех пор, пока данные == 1 или данные == -1
Более того, мне нужно, чтобы код продолжал выполняться, даже если я не вышел из цикла.
Спасибо за вашу помощь
signal_result = APIDATA
while signal_result == 1:
self.action(signal_result)
while signal_result == -1:
self.action(signal_result)
Просто следите за значением предыдущий, и если оно отличается, выполните действие:
# at the very start, initialise
previous_result = 0 # Some value that is different from 1 or -1
# ...
# ...
# When a signal is received:
global previous_result
signal_result = APIDATA
if signal_result != previous_result:
previous_result = signal_result
self.action(signal_result)
Нам нужно немного больше информации. Ваш код показывает вызов:
self.action()
. Означает ли это, что весь опубликованный код должен выполняться внутри другого метода? Ожидаете ли вы, что этот метод будет работать в бесконечном цикле, или его следует вызывать время от времени?