基础版本
#计算器,实现一些基本操作,加减乘除运算,以及打印结果操作
def jia(n1, n2):
return n1 + n2
def jian(n1, n2):
return n1 - n2
def chen(n1, n2):
return n1 * n2
r1 = jia(2, 3)
r2 = jian(r1, 5)
r3 = chen(r2, 5)
print(r3)
优化1.0
result = 0
def first_value(v):
global result
result = v
def jia(n):
global result #往后想要来操作result全部都是全局变量result
result += n
def jian(n):
global result
result -= n
def chen(n):
global result
result *= n
first_value(2)
jia(6)
jian(3)
chen(5)
print(result)
优化2.0
class Caculator:
__result = 0
@classmethod
def first_value(cls, v):
cls.__result = v
@classmethod
def jia(cls, n):
cls.__result += n
@classmethod
def jian(cls, n):
cls.__result -= n
@classmethod
def chen(cls, n):
cls.__result *= n
@classmethod
def show(cls):
print("计算的结果是:%d" % cls.__result)
Caculator.first_value(2)
Caculator.jia(6)
Caculator.jian(4)
Caculator.chen(5)
Caculator.show()
优化3.0
class Caculator:
def __init__(self, num):
self.__result = num
def jia(self, n):
self.__result += n
def jian(self, n):
self.__result -= n
def chen(self, n):
self.__result *= n
def show(self):
print("计算的结果是:%d" % self.__result)
c1 = Caculator(2)
c1.jia(6)
c1.jian(4)
c1.chen(5)
c1.show()
优化4.0
增加容错处理
class Caculator:
def __init__(self, num):
if not isinstance(num, int):
raise TypeError("当前数据类型有问题,请输入一个整型")
self.__result = num
def jia(self, n):
if not isinstance(n, int):
raise TypeError("当前数据类型有问题,请输入一个整型")
def jian(self, n):
if not isinstance(n, int):
raise TypeError("当前数据类型有问题,请输入一个整型")
def chen(self, n):
if not isinstance(n, int):
raise TypeError("当前数据类型有问题,请输入一个整型")
def show(self):
print("计算的结果是:%d" % self.__result)
c1 = Caculator(2)
c1.jia(6)
c1.jian(5)
c1.chen(4)
c1.show()
优化5.0
减少上一个代码的冗余度
**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 chen(self, n):
self.check_num(n)
self.__result *= n
def show(self):
print("计算的结果是:%d" % self.__result)
c1 = Caculator(2)
c1.jia(3)
c1.jian(2)
c1.chen(4)
c1.show()**
优化6.0
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 chen(self, n):
self.__result *= n
def show(self):
print("计算的结果是:%d" % self.__result)
c1 = Caculator(2)
c1.jia(3)
c1.jian(2)
c1.chen(4)
c1.show()
优化7.0
增加语音播报器
class Caculator:
def __say(self, word):
import win32com.client
# 1.创建一个播报器对象
sperker = win32com.client.Dispatch("SAPI.SpVoice")
# 2.通过这个播报器对新,直接播放相对应的语音字符串就可以
sperker.speak(word)
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 chen(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(3)
c1.jian(2)
c1.chen(4)
c1.show()