学习了re模块,python3.9写了一个简单的计算器,用户输入一个带括号的算式,输出结果
代码如下
import redef account(s): """实现4则混合运算""" while True: s1=re.search('d*[*/]-?d*',s)#找到*或/ if s1==None: break else: s2=s1.group() if re.search('*',s2): s3=s2.split('*') s4=float(s3[0]) s5=float(s3[1]) s6=str(s4 * s5) else: s3 = s2.split('/') s4 = float(s3[0]) s5 = float(s3[1]) s6 = str(s4 / s5) s=s.replace(s2,s6,1) numbers=[] while True: s7=re.search('[+-]?d+.?d*',s) if s7==None: break else: s8=s7.group() numbers.append(float(s8)) s=s.replace(s8,'',1) s9=0 for i in range(0,len(numbers)): s9+=numbers[i] return s9s=input("输入你要计算的算式")#12+34*56-8/4+2*89while True: s10=re.search('([^()]+)',s) if s10==None: s14=account(s) break else: s11=s10.group() s12 = s11.replace('(', '', 1) s12 = s12.replace(')', '', 1) s13=account(s12) s=s.replace(s11,str(s13),1) s15 = re.search('+-', s) if s15 != None: s = s.replace('+-', '-') s16 = re.search('--', s) if s16 != None: s = s.replace('--', '+')print(s14)