原始代码
def run():
a = input()
b = input()
c = input()
d = input()
condition1 = a>b and c<d
condition2 = a<b and c>d
if condition1:
print('condition1')
elif condition2:
print('conditon2')
else:
print('keep')
schedule.every(1).minutes.do(run)
该代码中a,b数据每秒钟发生变化,c,d每十分钟发生变化,软件每一分钟重复执行。十分钟结束后才能确定实际condition是1还是2.
想法一:本人想运用flag1让条件多次满足时不执行,也就是说在十分钟内会多次出现conditon1或者时conditon2的情况,当发生这种情况的时候只在第一次出现的时候执行,其他全部是keep,除非满足另一个一个条件。但是在尝试过程中一直失败。
想法二:在想法一满足的基础上想再加一个历史条件的检测功能,即第一次条件发生后存在60s的间隙,数据a,b在实时变化,有可能在程序第二次运行的时候condition1或2已经信号消失也就是输出keep,应该回到初始状态。本人不清楚如操作来达到这个效果。
我第一个想法想要的结果是类似于这样的,随时间的变化出现以下结果condition1(执行),conditon1(不执行而是print ok之后同理),keep(两个条件都不符合),),condition1(不执行),condition1(不执行),conditon1(不执行),condition2(执行),codition2(不执行),coditon1(执行)
我的历史检测是指,这里存在两个keep执行的条件即,a>b,c>d或a<b,c<d,当在condtion1出现的上一个ok如果是a>b,c>d,出现的下一个keep(并非由于第一个想法导致的结果即a>b,c>d)那么就回到执行conditon1之前的状态也就是conditon2.
该系统只存在两个状态conditon1 和condition2,在想法一未实现时keep指维持当前状态
不知道这样有没有解释清楚
希望能够给出思路以及源码方便学习,如果对我的表述有不理解,我可以再详细讲述
先不说实现的问题,我们先来理一下楼主的需求:
1、有4个数据,每两个成一对,一对a,b实时变化(每秒),一对c,d变化周期较长(10分钟)
2、有两个操作action1,action2,是在根据两对数据比较结果condition1,condition2来判断是否执行的,condition1,condition2不会同时满足
3、两对数据比较结果大致分为4类,其中两类对应两个动作,另外两类(非condition1,非condition2)不执行任何操作
4、两个操作不连续重复执行,允许间隔执行
5、有一个1分钟一次的循环来调用或者检查当前的运行状态
那么,还有几个疑问:
1、楼主给的代码应该是伪代码,abcd肯定不可能来自于输入,那么abcd数据来源是否可以直接驱动数据进行判断,也就是说现在的伪代码中,函数run是一分钟执行一次,那么期间ab更新了60轮,这60轮的数据是忽略了还是生效了,按照楼主的解释,需要生效的可能性比较大
2、接上一条,如果ab每秒数据更新都生效了,那么条件的判断与动作的执行,每秒都在运行,那么1分钟一次的函数调用目的是什么,需要返回什么数据
3、condition1执行action1,condition2执行action2,那么非condition1,非condition2导致的keep楼主到底想用来做什么,如果非condition2导致了keep,再次满足condition1时可以执行action1吗
我捋了一下思路,有以上想法,欢迎楼主来探讨一下
我本人做个很多项目,唯一的特点就是项目离不开标志位,当你的程序按照传统思维无法实现时,你可以适当的增加标志位,让标志位达到你想实现的功能。这就跟你以前上数学课,证明多边形相等,不做辅助线是很难实现的,所以你明白了吗
引用一楼,但是觉得应该稍微修改
flag1=0
flag2=0
def run():
global flag1,flag2
a = input()
b = input()
c = input()
d = input()
condition1 = a>b and c<d
condition2 = a<b and c>d
if condition1 and flag1==0:
print('condition1')
flag1=1
flag2=0
elif condition2 and flag2==0:
print('conditon2')
flag2=1
flag1=0
else:
print('keep')
schedule.every(1).minutes.do(run)
可以满足条件给变量加1,然后达到某个条件之后来触发
你需要分别保存条件(a,b,c,d),需要计时器
你不知要判断条件,还要判断当前
flag = 0
c1 = 0
d1 = 0
def run():
a = input()
b = input()
c = input()
d = input()
if c1 < > c:
c1 = c
flag = 1
goto .end
elif d1 < > d:
d1 = d
flag = 1
goto .end
else
flag = 0
return
label .end
if flag = 1:
condition1 = a > b and c < d
condition2 = a < b and c > d
if condition1:
print('condition1')
elif condition2:
print('conditon2')
else :
print('keep')
flag = 0
schedule.every(1).minutes.do(run)
给你请个例子
flag1 = True
if condition1 and flag1 = True:
a()
flag1 = Flase
elif condition2:
b()
else
pass
望采纳