import re def error(): print('输入格式不规范') def jisuan(s):#加减乘除 先乘除再加减 while s.count('*')!=0: ret = re.search('\d+[*]\d+',s).group() x,y = re.split('[*]',ret) x = int(x) y = int(y) ret1 = x * y ret1 = str(ret1) # s=re.sub(ret,ret1,s) s = s.replace(ret, ret1) while s.count('/')!=0: ret2 = re.search('\d+[/]\d+', s).group() x1, y1= re.split('[/]', ret2) x1 = int(x1) y1 = int(y1) ret3 = (x1) /(y1) ret3=str(ret3) s=s.replace(ret2,ret3) print(s) while s.count('+')!=0: ret4=re.search('\d+[+]\d+',s).group() x2,y2=re.split('[+]',ret4) ret5=int(x2)+int(y2) s=s.replace(ret4,str(ret5)) print(s) while s.count('-')!=0: ret6=re.search('\d+[-]\d+',s).group() x3,y3=re.split('-',ret6) ret7=int(x3) - int(y3) s=s.replace(ret6,str(ret7)) return s print('请输入想要计算的数:') a=input() if re.findall('\(',a).__len__()==re.findall('\)',a).__len__(): if re.findall('[a-zA-Z]',a).__len__()==0: if re.findall('\(.*\)',a).__len__()!=0:#先判断有没有括号 while re.findall(r'\([^(,)]*\)',a)!=0:#再将括号内全部计算 有没有多重括号 #计算 else:#无括号,直接计算 a=jisuan(a) print(a) else: error()else: error()
有很多不足的地方 也有很多没有弄明白的地方 首先是如果到减法结果为负数的话,系统会报错 其次代码重复过多 由于刚学习python 实战时 甚至连replace为何没有成功替换而焦躁,我还有许多需要学习改进的地方。