前言:
此刻兄弟们对“python区间判断”大致比较注意,兄弟们都想要分析一些“python区间判断”的相关资讯。那么小编也在网络上汇集了一些对于“python区间判断””的相关文章,希望姐妹们能喜欢,朋友们一起来了解一下吧!这个很适合用状态机来写代码实现。
1、列出所有状态,如果不考虑状态内部变化的话,可以是初始、干旱、半旱、正常但之前持续1的步数为0、...、正常但之前持续1的步数为4 。
2、列出状态之间的转移
3、编码实现
4、实际上可以加入状态内的变量,就能缩减状态数量初始、干旱、半旱、正常,其中正常状态内有之前持续1的步数这个变量。
代码实现就很容易了
class State: def __str__(self): return self.__class__.__name__class Init(State): def transform(self, step): wet = Wet() if step == 1: wet.continue_steps += 1 return wetclass Dry(State): def transform(self, step): if step == 1: return self else: return HalfDry()class HalfDry(State): def transform(self, step): if step == 1: return Dry() else: return Wet()class Wet(State): continue_steps = 0 def transform(self, step): if step == 0: self.continue_steps = 0 return self elif self.continue_steps >= 4: return Dry() else: self.continue_steps += 1 return self def __str__(self): return f'{self.__class__.__name__}:{self.continue_steps}' class FSM: state = Init() def run(self, steps): for step in steps: print(f'{self.state} +{step}-->', end='') self.state = self.state.transform(step) fsm = FSM()steps = [1,0,1,1,1,1,1,0,1,1,1,0,0,0,1,1,1,1,1,1,1,0,0,0,1,1,0,1,1,0,1]fsm.run(steps)# 输出结果# >>> Init +1-->Wet:1 +0-->Wet:0 +1-->Wet:1 +1-->Wet:2 +1-->Wet:3 +1-->Wet:4 +1-->Dry +0-->HalfDry +1-->Dry +1-->Dry +1-->Dry +0-->HalfDry +0-->Wet:0 +0-->Wet:0 +1-->Wet:1 +1-->Wet:2 +1-->Wet:3 +1-->Wet:4 +1-->Dry +1-->Dry +1-->Dry +0-->HalfDry +0-->Wet:0 +0-->Wet:0 +1-->Wet:1 +1-->Wet:2 +0-->Wet:0 +1-->Wet:1 +1-->Wet:2 +0-->Wet:0 +1-->
编辑于 17 小时前
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #python区间判断