温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Python策略模式怎么用

发布时间:2022-01-13 17:10:46 来源:亿速云 阅读:151 作者:iii 栏目:大数据

这篇文章主要介绍“Python策略模式怎么用”,在日常操作中,相信很多人在Python策略模式怎么用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python策略模式怎么用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

首先是发生器基类:

class Generator:    # 初始化函数    # period:周期    def __init__(self, period):        self.period= period    # 计算输入值折算到最后一个周期时的占比    def rate(self, t):        return(t - int(t / self.period) * self.period)/ self.period    # 计算输出    def output(self, t):        pass

发生器基类Gererator定义了策略接口output,其功能是根据输入的时间值计算对应的输出数据。由于信号发生器的周期性,因此在实际的处理中只要将时间值折算到一个周期之内再计算结果即可,这个折算功能就是rate方法。接下来就是具象策略类正弦发生器SinGerneator和方波发生器SquareGenerator,具体实现如下:

class SinGenerator(Generator):    def __init__(self,period):        Generator.__init__(self, period)    # 计算输出    def output(self, t):        returnsin(2 * 3.1415926* self.rate(t))        class SquareGenerator(Generator):    def __init__(self,period):        Generator.__init__(self, period)    # 计算输出    def output(self, t):        if self.rate(t) < 0.5:            return-1        else:

两个具象类分别实现了output方法以输出正弦数据和方波数据。为了体验发生器策略的功能,我们设计了如下的小程序。

def test_strategy(generator):    result = ''    # 正好输出一个周期    for t in range(0, 16):        # 调用策略接口        value= generator.output(t)        # 格式化输出        result= result + '{:+.2f},'.format(round(value, 2))    print(result)
if __name__ == '__main__':    # 使用正弦策略,周期20    test_strategy(SinGenerator(16))    # 使用方波策略,周期20    test_strategy(SquareGenerator(16))

代码使用完全相同的逻辑,使用了两个信号发生器。以下是其程序执行结果:

+0.00,+0.38,+0.71,+0.92,+1.00,+0.92,+0.71,+0.38,+0.00,-0.38,-0.71,-0.92,-1.00,-0.92,-0.71,-0.38,-1.00,-1.00,-1.00,-1.00,-1.00,-1.00,-1.00,-1.00,+1.00,+1.00,+1.00,+1.00,+1.00,+1.00,+1.00,+1.00,

到此,关于“Python策略模式怎么用”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI