单位建网站,手机设置管理网站,昆明公司网站制作,字体设计教程网站案例描述
实现加减乘法运算
# _*_ encoding:utf-8 _*_# 计算器, 实现一些基本的操作, 加减乘除运算, 以及打印结果操作# ------------------------------------代码1--------------------------------------
def jia(n1, n2):return n1 n2def jian(n1, n2):return n1 - n2de…案例描述
实现加减乘法运算
# _*_ encoding:utf-8 _*_# 计算器, 实现一些基本的操作, 加减乘除运算, 以及打印结果操作# ------------------------------------代码1--------------------------------------
def jia(n1, n2):return n1 n2def jian(n1, n2):return n1 - n2def cheng(n1, n2):return n1 * n2res jia(2, 4)
res2 cheng(5, 7)
print(res)
print(res2)#(2 6 - 4) * 5
r1 jia(2, 6)
r2 jian(r1, 4)
r3 cheng(r2, 5)
print(r3)# ------------------------------------代码2--------------------------------------
result 0def first_value(v):global resultresult vdef jia(n):global resultresult ndef jian(n):global resultresult - ndef cheng(n):global resultresult * nfirst_value(2)
jia(6)
result 123
jian(4)
cheng(5)
print(result)# ------------------------------------代码3--------------------------------------
## 封装到类提高安全性
class Caculator:__result 0classmethoddef first_value(cls, v):cls.__result vclassmethoddef jia(cls, n):cls.__result nclassmethoddef jian(cls, n):cls.__result - nclassmethoddef cheng(cls, n):cls.__result * nclassmethoddef show(cls):print(计算的结果是:%d % cls.__result)Caculator.first_value(2)Caculator.jia(6)
Caculator.jian(4)
Caculator.cheng(5)
Caculator.show()# ------------------------------------代码4--------------------------------------
## 增加并发功能
class Caculator:def __init__(self, num):self.__result numdef jia(self, n):self.__result ndef jian(self, n):self.__result - ndef cheng(self, n):self.__result * ndef 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 numdef jia(self, n):self.check_num(n)self.__result ndef jian(self, n):self.check_num(n)self.__result - ndef cheng(self, n):self.check_num(n)self.__result * ndef show(self):print(计算的结果是:%d % self.__result)c1 Caculator(2)
c1.jia(6)
c1.jian(a)
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 innercheck_num_zsqdef __init__(self, num):self.__result numcheck_num_zsqdef jia(self, n):self.__result ncheck_num_zsqdef jian(self, n):self.__result - ncheck_num_zsqdef cheng(self, n):self.__result * ndef 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_zsqdef __init__(self, num):self.__result num__check_num_zsqdef jia(self, n):self.__result n__check_num_zsqdef jian(self, n):self.__result - n__check_num_zsqdef cheng(self, n):self.__result * ndef show(self):print(计算的结果是:%d % self.__result)c1 Caculator(2)
c1.jia(6)
c1.jian(4)
c1.cheng(5)
c1.show()# ------------------------------------代码8--------------------------------------
# 针对用户的每个操作进行语音播报类似开启语音播报的计算器import win32com.clientclass Caculator:def __check_num_zsq(func):def inner(self, n):if not isinstance(n, int):raise TypeError(当前这个数据的类型有问题, 应该是一个整型数据)return func(self, n)return innerdef __say(self, word):# 1. 创建一个播报器对象speaker win32com.client.Dispatch(SAPI.SpVoice)# 2. 通过这个播报器对象, 直接, 播放相对应的语音字符串就可以speaker.Speak(word)def create_say_zsq(word):def __say_zsq(func):def inner(self, n):# 1. 创建一个播报器对象speaker win32com.client.Dispatch(SAPI.SpVoice)# 2. 通过这个播报器对象, 直接, 播放相对应的语音字符串就可以speaker.Speak(word str(n))return func(self, n)return innerreturn __say_zsq__check_num_zsqcreate_say_zsq()def __init__(self, num):self.__result num__check_num_zsqcreate_say_zsq(加)def jia(self, n):self.__result n__check_num_zsqcreate_say_zsq(减去)def jian(self, n):self.__result - n__check_num_zsqcreate_say_zsq(乘以)def cheng(self, n):self.__result * ndef show(self):self.__say(计算的结果是:%d % self.__result)print(计算的结果是:%d % self.__result)c1 Caculator(10)
c1.jia(6)
c1.jian(4)
c1.cheng(5)
c1.show()# ------------------------------------代码9--------------------------------------
# 播报优化
import win32com.clientclass Caculator:def __check_num_zsq(func):def inner(self, n):if not isinstance(n, int):raise TypeError(当前这个数据的类型有问题, 应该是一个整型数据)return func(self, n)return innerdef __say(self, word):# 1. 创建一个播报器对象speaker win32com.client.Dispatch(SAPI.SpVoice)# 2. 通过这个播报器对象, 直接, 播放相对应的语音字符串就可以speaker.Speak(word)def __create_say_zsq(word):def __say_zsq(func):def inner(self, n):self.__say(word str(n))return func(self, n)return innerreturn __say_zsq__check_num_zsq__create_say_zsq()def __init__(self, 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 * ndef show(self):self.__say(计算的结果是:%d % self.__result)print(计算的结果是:%d % self.__result)c1 Caculator(10)
c1.jia(6)
c1.jian(4)
c1.cheng(5)
c1.show()# ------------------------------------代码10--------------------------------------
import win32com.clientclass Caculator:def __check_num_zsq(func):def inner(self, n):if not isinstance(n, int):raise TypeError(当前这个数据的类型有问题, 应该是一个整型数据)return func(self, n)return innerdef __say(self, word):# 1. 创建一个播报器对象speaker win32com.client.Dispatch(SAPI.SpVoice)# 2. 通过这个播报器对象, 直接, 播放相对应的语音字符串就可以speaker.Speak(word)def __create_say_zsq(word):def __say_zsq(func):def inner(self, n):self.__say(word str(n))return func(self, n)return innerreturn __say_zsq__check_num_zsq__create_say_zsq()def __init__(self, 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 * ndef show(self):self.__say(计算的结果是:%d % self.__result)print(计算的结果是:%d % self.__result)propertydef result(self):return self.__resultc1 Caculator(10)
c1.jia(6)
c1.jian(4)
c1.cheng(5)
c1.show()print(c1.result)
c1.result 10# ------------------------------------代码11--------------------------------------
import win32com.clientclass Caculator:def __check_num_zsq(func):def inner(self, n):if not isinstance(n, int):raise TypeError(当前这个数据的类型有问题, 应该是一个整型数据)return func(self, n)return innerdef __say(self, word):# 1. 创建一个播报器对象speaker win32com.client.Dispatch(SAPI.SpVoice)# 2. 通过这个播报器对象, 直接, 播放相对应的语音字符串就可以speaker.Speak(word)def __create_say_zsq(word):def __say_zsq(func):def inner(self, n):self.__say(word str(n))return func(self, n)return innerreturn __say_zsq__check_num_zsq__create_say_zsq()def __init__(self, num):self.__result num__check_num_zsq__create_say_zsq(加)def jia(self, n):self.__result nreturn self__check_num_zsq__create_say_zsq(减去)def jian(self, n):self.__result - nreturn self__check_num_zsq__create_say_zsq(乘以)def cheng(self, n):self.__result * nreturn selfdef show(self):self.__say(计算的结果是:%d % self.__result)print(计算的结果是:%d % self.__result)return selfdef clear(self):self.__result 0return selfpropertydef result(self):return self.__resultc1 Caculator(10)
c1.jia(6).jian(4).cheng(5).show().clear().jia(555).jian(500).show() # 链式编程在方法内部再次返回调用方法的实例本身print(c1.result)# ------------------------------------代码12--------------------------------------import win32com.clientclass Caculator(object):staticmethoddef __say(word):speaker win32com.client.Dispatch(SAPI.SpVoice)speaker.Speak(word)def createSayZSQ(operation):def say(func):def inner(self, v):Caculator.__say(operation str(v))return func(self, v)return innerreturn saydef __check_num(func):def inner(self, v):if not isinstance(v, int):raise TypeError(数据类型有误, 应该是一个整型数据)return func(self, v)return innercreateSayZSQ()__check_numdef __init__(self, v):self.__result vcreateSayZSQ(加)__check_numdef jia(self, n):self.__result nreturn selfcreateSayZSQ(减)__check_numdef jian(self, n):self.__result - nreturn selfcreateSayZSQ(乘)__check_numdef cheng(self, n):self.__result * nreturn selfdef show(self):self.__say(计算结果为:%d % self.__result)print(计算结果为:%d % self.__result)return selfc Caculator(2)
c.jia(6).jian(4).cheng(3).show()补充
使用Python调用微软的语音接口import win32com.clientspeaker win32com.client.Dispatch(SAPI.SpVoice)speaker.Speak(word)
文章转载自: http://www.morning.tqrjj.cn.gov.cn.tqrjj.cn http://www.morning.zdydj.cn.gov.cn.zdydj.cn http://www.morning.rsmtx.cn.gov.cn.rsmtx.cn http://www.morning.rqmr.cn.gov.cn.rqmr.cn http://www.morning.bsqbg.cn.gov.cn.bsqbg.cn http://www.morning.zzfqn.cn.gov.cn.zzfqn.cn http://www.morning.trrrm.cn.gov.cn.trrrm.cn http://www.morning.dkbsq.cn.gov.cn.dkbsq.cn http://www.morning.mghgl.cn.gov.cn.mghgl.cn http://www.morning.nafdmx.cn.gov.cn.nafdmx.cn http://www.morning.mrpqg.cn.gov.cn.mrpqg.cn http://www.morning.ndhxn.cn.gov.cn.ndhxn.cn http://www.morning.mplld.cn.gov.cn.mplld.cn http://www.morning.dqxph.cn.gov.cn.dqxph.cn http://www.morning.zwtp.cn.gov.cn.zwtp.cn http://www.morning.mxmtt.cn.gov.cn.mxmtt.cn http://www.morning.lssfd.cn.gov.cn.lssfd.cn http://www.morning.kpgms.cn.gov.cn.kpgms.cn http://www.morning.qmncj.cn.gov.cn.qmncj.cn http://www.morning.tkrpt.cn.gov.cn.tkrpt.cn http://www.morning.pdkht.cn.gov.cn.pdkht.cn http://www.morning.jrbyz.cn.gov.cn.jrbyz.cn http://www.morning.tbjtm.cn.gov.cn.tbjtm.cn http://www.morning.xsfg.cn.gov.cn.xsfg.cn http://www.morning.jczjf.cn.gov.cn.jczjf.cn http://www.morning.smj79.cn.gov.cn.smj79.cn http://www.morning.pswqx.cn.gov.cn.pswqx.cn http://www.morning.wklmj.cn.gov.cn.wklmj.cn http://www.morning.hqykb.cn.gov.cn.hqykb.cn http://www.morning.yxnkr.cn.gov.cn.yxnkr.cn http://www.morning.kyhnl.cn.gov.cn.kyhnl.cn http://www.morning.jghqc.cn.gov.cn.jghqc.cn http://www.morning.mpnff.cn.gov.cn.mpnff.cn http://www.morning.qbgdy.cn.gov.cn.qbgdy.cn http://www.morning.nhzzn.cn.gov.cn.nhzzn.cn http://www.morning.ksjmt.cn.gov.cn.ksjmt.cn http://www.morning.dtlqc.cn.gov.cn.dtlqc.cn http://www.morning.mfjfh.cn.gov.cn.mfjfh.cn http://www.morning.fwnqq.cn.gov.cn.fwnqq.cn http://www.morning.ntqqm.cn.gov.cn.ntqqm.cn http://www.morning.dqbpf.cn.gov.cn.dqbpf.cn http://www.morning.nd-test.com.gov.cn.nd-test.com http://www.morning.lmtbl.cn.gov.cn.lmtbl.cn http://www.morning.hpnhl.cn.gov.cn.hpnhl.cn http://www.morning.zfrs.cn.gov.cn.zfrs.cn http://www.morning.ymdhq.cn.gov.cn.ymdhq.cn http://www.morning.ctbr.cn.gov.cn.ctbr.cn http://www.morning.zdsdn.cn.gov.cn.zdsdn.cn http://www.morning.njnqn.cn.gov.cn.njnqn.cn http://www.morning.mxhgy.cn.gov.cn.mxhgy.cn http://www.morning.rgpsq.cn.gov.cn.rgpsq.cn http://www.morning.nclps.cn.gov.cn.nclps.cn http://www.morning.tzmjc.cn.gov.cn.tzmjc.cn http://www.morning.ksbmx.cn.gov.cn.ksbmx.cn http://www.morning.kxypt.cn.gov.cn.kxypt.cn http://www.morning.fstesen.com.gov.cn.fstesen.com http://www.morning.cctgww.cn.gov.cn.cctgww.cn http://www.morning.jrhmh.cn.gov.cn.jrhmh.cn http://www.morning.kcsx.cn.gov.cn.kcsx.cn http://www.morning.qwdqq.cn.gov.cn.qwdqq.cn http://www.morning.wmfr.cn.gov.cn.wmfr.cn http://www.morning.tgdys.cn.gov.cn.tgdys.cn http://www.morning.rlzxr.cn.gov.cn.rlzxr.cn http://www.morning.krgjc.cn.gov.cn.krgjc.cn http://www.morning.tnfyj.cn.gov.cn.tnfyj.cn http://www.morning.bsghk.cn.gov.cn.bsghk.cn http://www.morning.cpmfp.cn.gov.cn.cpmfp.cn http://www.morning.ssfq.cn.gov.cn.ssfq.cn http://www.morning.ryjqh.cn.gov.cn.ryjqh.cn http://www.morning.nkiqixr.cn.gov.cn.nkiqixr.cn http://www.morning.qxdrw.cn.gov.cn.qxdrw.cn http://www.morning.mlffg.cn.gov.cn.mlffg.cn http://www.morning.qbwbs.cn.gov.cn.qbwbs.cn http://www.morning.pwbps.cn.gov.cn.pwbps.cn http://www.morning.tmlhh.cn.gov.cn.tmlhh.cn http://www.morning.rlhgx.cn.gov.cn.rlhgx.cn http://www.morning.mgkcz.cn.gov.cn.mgkcz.cn http://www.morning.qnbsx.cn.gov.cn.qnbsx.cn http://www.morning.xmhpq.cn.gov.cn.xmhpq.cn http://www.morning.dmcxh.cn.gov.cn.dmcxh.cn