随笔 - 287  文章 - 0  评论 - 13  阅读 - 26万

python 计算器语音播报模拟

计算器语音播报模拟

python 要点

1.闭包

2.链式计算

3.语音播报

4.类与实例

复制代码
import pyttsx3

class Caculator:

    def __say(self,word):
        speaker = pyttsx3.init()
        speaker.say(word)
        speaker.runAndWait()

    def __create_say(word=""):
        def __say_word(func):
            def inner(self,n):
                self.__say(word+str(n))
                return func(self,n)
            return inner
        return __say_word

    def __check_number(func):
        def inneer(self,n):
            if not isinstance(n, int):
                raise TypeError("数据类型应为整形数据")
            return func(self,n)
        return inneer

    @__check_number
    @__create_say("")
    def __init__(self,num):
       self.__result=num

    @__check_number
    @__create_say("add")
    def add(self,n):
        self.__result+=n
        return self

    @__check_number
    @__create_say("minus")
    def mins(self,n):
        self.__result-=n
        return self

    @__check_number
    @__create_say("multiply")
    def multiply(self,n):
        self.__result*=n
        return self

    def show(self):
        self.__say("final result is :%d" %self.__result)
        print("final result is:%d" %self.__result)
        return self

    def clear(self):
        self.__say("clean up to Zero")
        self.__result=0
        print("clean up result to %d" % self.__result)
        return self

    @property
    def result(self):
        return self.__result

c1 = Caculator(10)
c1.add(6).mins(2).multiply(2).show().clear().add(500).mins(200).multiply(20).show()
复制代码

显示结果

final result is:28
clean up result to 0
final result is:6000

posted on   InnoLeo  阅读(515)  评论(0编辑  收藏  举报
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示