Python什么是状态机,状态机的简单应用

状态机是由两种或多种状态组成的,每一个状态有着对应的功能。状态机使用会让我们的代码简洁,逻辑清晰,条件判断难以实现的问题我们就可以实现,例如我们像完成这样的效果。

 

Python什么是状态机,状态机的简单应用_第1张图片

我们通过每次画不同的字符串来做出这样的效果,但是如果我们使用条件判断,判断空格数会发现我们代码的逻辑很难。这种情况就可以使用状态机,接下来请大家结合实例,阅读代码注释,进一步理解。

import time


class Draw:
    def __init__(self, num=5):
        '''
        :param num: 圆点个数
        :variable flag: 状态机, indents: 原点前面的空格。
        '''
        self.num = num
        self.indents = num
        self.flag = True

    # 创建绘制函数
    def draw(self):
        symbols_list = []
        for i in range(self.num):
            symbols_list.append('•')
        _indents = self.num
        while True:
            # 空白符列表
            indents_list = []
            for j in range(self.indents):
                indents_list.append(' ')
            if self.indents == 0:  # 当前面的空格到0,切换加的模式
                self.flag = False
            if self.indents == self.num:  # 到了跟圆点一样,就切换减的模式
                self.flag = True
            self._decide()
            # 把两个列表连起来
            new_list = indents_list + symbols_list
            # 连接成字符串,等待并输出
            print(''.join(new_list))
            time.sleep(0.5)

    def _decide(self):
        # 状态机
        if not self.flag:
            self.indents += 1
        elif self.flag:
            self.indents -= 1

paint = Draw()
paint.draw()

你可能感兴趣的:(python)