# 计算器,实现一些基本的操作,加减乘除,以及打印结果操作 # --------------------------------------------------------代码1--------------------------------------------------------- # def jia(n1, n2): # return n1 + n2 # # def jian(n1, n2): # return n1 - n2 # # def cheng(n1, n2): # return n1 * n2 # # def chu(n1, n2): # return n1 / n2 # # res = chu(1, 4) # print(res) # # # 计算 2 + 6 - 4 * 5 # # r1 = jia(2, 6) # r2 = jian(r1, 4) # r3 = cheng(r2, 5) # print(r3) # --------------------------------------------------------代码2--------------------------------------------------------- # result = 0 # def firstvalue(v): # global result # result = v # # def jia(n): # global result # result += n # # def jian(n): # global result # result -= n # # def cheng(n): # global result # result *= n # # def chu(n): # global result # result /= n # # # res = chu(1, 4) # # print(res) # # # 计算 2 + 6 - 4 * 5 # # # r1 = jia(2, 6) # # r2 = jian(r1, 4) # # r3 = cheng(r2, 5) # # print(r3) # # firstvalue(2) # jia(6) # jian(4) # cheng(5) # print(result) # --------------------------------------------------------代码3--------------------------------------------------------- # class Caculator: # __result = 0 # @classmethod # def firstvalue(cls, v): # cls.__result = v # @classmethod # def jia(cls, n): # cls.__result += n # @classmethod # def jian(cls, n): # cls.__result -= n # @classmethod # def cheng(cls, n): # cls.__result *= n # @classmethod # def chu(cls, n): # cls.__result /= n # @classmethod # def show(cls): # print("计算的结果是:%d" % cls.__result) # Caculator.firstvalue(2) # Caculator.jia(6) # Caculator.jian(4) # Caculator.cheng(5) # Caculator.show() # --------------------------------------------------------代码4--------------------------------------------------------- # class Caculator: # # def __init__(self, num): # self.__result = num # # def jia(self, n): # self.__result += n # # def jian(self, n): # self.__result -= n # # def cheng(self, n): # self.__result *= n # # def chu(self, n): # self.__result /= n # # def show(self): # print("计算的结果是:%d" % self.__result) # # c1 = Caculator(2) # c1.jia(6) # c1.jian(4) # c1.cheng(5) # c1.show() # --------------------------------------------------------代码5--------------------------------------------------------- # 增加容错处理 # class Caculator: # # def check_num(self,num): # if not isinstance(num, int): # raise TypeError("当前这个数据的类型有问题,应该是一个整型数据") # def __init__(self, num): # self.check_num(num) # self.__result = num # # def jia(self, n): # self.check_num(n) # self.__result += n # # def jian(self, n): # self.check_num(n) # self.__result -= n # # def cheng(self, n): # self.check_num(n) # self.__result *= n # # def chu(self, n): # self.check_num(n) # self.__result /= n # # def show(self): # print("计算的结果是:%d" % self.__result) # # c1 = Caculator(2) # c1.jia(6) # c1.jian(4) # c1.cheng(5) # c1.show() # --------------------------------------------------------代码6--------------------------------------------------------- # 用装饰器写容错处理 # class Caculator: # # def check_num_zsq(func): # def inner(self, n): # if not isinstance(n, int): # raise TypeError("当前这个数据的类型有问题,应该是一个整型数据") # return func(self, n) # return inner # @check_num_zsq # def __init__(self, num): # self.__result = num # # @check_num_zsq # def jia(self, n): # self.__result += n # # @check_num_zsq # def jian(self, n): # self.__result -= n # # @check_num_zsq # def cheng(self, n): # self.__result *= n # # @check_num_zsq # def chu(self, n): # self.__result /= n # # def show(self): # print("计算的结果是:%d" % self.__result) # # c1 = Caculator(2) # c1.jia(6) # c1.jian(4) # c1.cheng(5) # c1.show() # --------------------------------------------------------代码7--------------------------------------------------------- #优化装饰器不被外界调用 # class Caculator: # # def __check_num_zsq(func): # def inner(self, n): # if not isinstance(n, int): # raise TypeError("当前这个数据的类型有问题,应该是一个整型数据") # return func(self, n) # return inner # @__check_num_zsq # def __init__(self, num): # self.__result = num # # @__check_num_zsq # def jia(self, n): # self.__result += n # # @__check_num_zsq # def jian(self, n): # self.__result -= n # # @__check_num_zsq # def cheng(self, n): # self.__result *= n # # @__check_num_zsq # def chu(self, n): # self.__result /= n # # def show(self): # print("计算的结果是:%d" % self.__result) # # c1 = Caculator(2) # c1.jia(6) # c1.jian(4) # c1.cheng(5) # c1.show() # --------------------------------------------------------代码8--------------------------------------------------------- # 增加语音步骤操作提示 # # 1.导入win32com 仅适用于windows操作系统 # import win32com.client # # # 2.创建一个播报器对象 # speaker = win32com.client.Dispatch("SAPI.SpVoice") # # 3.通过播报器对象,直接播放相对应的语音字符串。 # speaker.Speak("我的名字是fj") # class Caculator: # # def __say(self, world): # speaker = win32com.client.Dispatch("SAPI.SpVoice") # # 3.通过播报器对象,直接播放相对应的语音字符串。 # speaker.Speak(world) # # def __check_num_zsq(func): # def inner(self, n): # if not isinstance(n, int): # raise TypeError("当前这个数据的类型有问题,应该是一个整型数据") # return func(self, n) # return inner # @__check_num_zsq # def __init__(self, num): # self.__say(num) # self.__result = num # # @__check_num_zsq # def jia(self, n): # self.__say(n) # self.__result += n # # @__check_num_zsq # def jian(self, n): # self.__say(n) # self.__result -= n # # @__check_num_zsq # def cheng(self, n): # self.__say(n) # self.__result *= n # # @__check_num_zsq # def chu(self, n): # self.__say(n) # self.__result /= n # # def show(self): # self.__say("计算的结果是:%d" % self.__result) # print("计算的结果是:%d" % self.__result) # # c1 = Caculator(2) # c1.jia(6) # c1.jian(4) # c1.cheng(5) # c1.show() # --------------------------------------------------------代码9--------------------------------------------------------- # # 用装饰器写播报功能 # # 将运算符号也播报出来 # # 1.导入win32com 仅适用于windows操作系统 # import win32com.client # # # 2.创建一个播报器对象 # speaker = win32com.client.Dispatch("SAPI.SpVoice") # # 3.通过播报器对象,直接播放相对应的语音字符串。 # speaker.Speak("我的名字是fj") # class Caculator: # # # def __check_num_zsq(func): # def inner(self, n): # if not isinstance(n, int): # raise TypeError("当前这个数据的类型有问题,应该是一个整型数据") # return func(self, n) # return inner # # def __say(self, world): # speaker = win32com.client.Dispatch("SAPI.SpVoice") # # 3.通过播报器对象,直接播放相对应的语音字符串。 # speaker.Speak(world) # # def __create_say_zsq(world=""): # def __say_zsq(func): # def inner(self, n): # self.__say(world + str(n)) # return func(self, n) # return inner # return __say_zsq # # # # @__check_num_zsq # @__create_say_zsq() # def __init__(self, num): # self.__say(num) # self.__result = num # # @__check_num_zsq # @__create_say_zsq("加") # def jia(self, n): # self.__result += n # # @__check_num_zsq # @__create_say_zsq("减") # def jian(self, n): # self.__result -= n # # @__check_num_zsq # @__create_say_zsq("乘") # def cheng(self, n): # self.__result *= n # # @__check_num_zsq # @__create_say_zsq("除") # def chu(self, n): # self.__result /= n # # # def show(self): # self.__say("计算的结果是:%d" % self.__result) # print("计算的结果是:%d" % self.__result) # # # 用描述器在外界可以拿到结果值输出结果 # @property # def result(self): # return self.__result # c1 = Caculator(2) # c1.jia(6) # c1.jian(4) # c1.cheng(5) # c1.show() # print(c1.result) # --------------------------------------------------------代码10-------------------------------------------------------- # 减少c1,应用链式编程 # 用装饰器写播报功能 # 将运算符号也播报出来 # 1.导入win32com 仅适用于windows操作系统 import win32com.client # 2.创建一个播报器对象 speaker = win32com.client.Dispatch("SAPI.SpVoice") # 3.通过播报器对象,直接播放相对应的语音字符串。 speaker.Speak("我的名字是fj") class Caculator: def __check_num_zsq(func): def inner(self, n): if not isinstance(n, int): raise TypeError("当前这个数据的类型有问题,应该是一个整型数据") return func(self, n) return inner def __say(self, world): speaker = win32com.client.Dispatch("SAPI.SpVoice") # 3.通过播报器对象,直接播放相对应的语音字符串。 speaker.Speak(world) def __create_say_zsq(world=""): def __say_zsq(func): def inner(self, n): self.__say(world + str(n)) return func(self, n) return inner return __say_zsq @__check_num_zsq @__create_say_zsq() def __init__(self, num): self.__say(num) self.__result = num return self @__check_num_zsq @__create_say_zsq("加") def jia(self, n): self.__result += n return self @__check_num_zsq @__create_say_zsq("减") def jian(self, n): self.__result -= n return self @__check_num_zsq @__create_say_zsq("乘") def cheng(self, n): self.__result *= n return self @__check_num_zsq @__create_say_zsq("除") def chu(self, n): self.__result /= n return self def show(self): self.__say("计算的结果是:%d" % self.__result) print("计算的结果是:%d" % self.__result) return self # 用描述器在外界可以拿到结果值输出结果 @property def result(self): return self.__result c1 = Caculator(2) c1.jia(6).jian(4).cheng(5).show() print(c1.result)
面向对象编程-综合案例
最新推荐文章于 2022-02-27 21:21:46 发布