标签:解析 str turn 符号 split 作业 开发 eval 功能
作业要求:
开发一个简单的python计算器
import re def clear(Re,res1): Re=re.sub(‘[()]‘,‘‘,Re) res= re.sub(‘\([^()]+\)‘,Re,res1,1) res= re.sub("\+\+|--", "+", res) res= re.sub("\+-|-\+", "-", res) return res def muldiv(res): while re.search(‘-?\d+\.?\d*[\*\/]-?\d+\.?\d*‘,res): Re=re.search(‘-?\d+\.?\d*[\*\/]-?\d+\.?\d*‘,res).group() if re.search(‘-?\d+\.?\d*\*-?\d+\.?\d*‘,Re): m,n=re.split(‘\*‘,Re) total=float(m)*float(n) if re.search(‘-\d+\.?\d*\*-\d+\.?\d*‘,res): res = re.sub("-?\d+\.?\d*\*-?\d+\.?\d*",("+"+str(total)),res,1) return muldiv(res) else: res=re.sub(‘-?\d+\.?\d*\*-?\d+\.?\d*‘,str(total),res,1) return muldiv(res) if re.search(‘-?\d+\.?\d*\/-?\d+\.?\d*‘, Re): m,n=re.split(‘\/‘,Re) total=float(m)/float(n) res=re.sub(‘-?\d+\.?\d*\/-?\d+\.?\d*‘,str(total),res,1) return muldiv(res) return res def addsub(res): while re.search(‘-?\d+\.?\d*[\+\-]-?\d+\.?\d*‘,res): Re=re.search(‘-?\d+\.?\d*[\+\-]-?\d+\.?\d*‘,res).group() if re.search(‘-?\d+\.?\d*\+-?\d+\.?\d*‘,Re): m,n=re.split(‘\+‘,Re) total=float(m)+float(n) res=re.sub(‘-?\d+\.?\d*\+-?\d+\.?\d*‘,str(total),res,1) return addsub(res) if re.search(‘-?\d+\.?\d*\--?\d+\.?\d*‘,Re): m, n = re.split(‘\-‘, Re) total = float(m) - float(n) res = re.sub(‘-?\d+\.?\d*\--?\d+\.?\d*‘, str(total), res, 1) return addsub(res) return res def count(res): while re.search(‘\([^()]+\)‘,res): Re= re.search(‘\([^()]+\)‘,res).group() Re1=muldiv(Re) Re2=addsub(Re1) Clear=clear(Re2, res) return count(Clear) else: Re1 = muldiv(res) Re2 = addsub(Re1) return Re2 s=input(‘请输入想计算的内容:‘) s=re.sub(‘ ‘,‘‘,s) print(count(s))
标签:解析 str turn 符号 split 作业 开发 eval 功能
原文地址:http://www.cnblogs.com/panyouming/p/6789065.html