python——简易计算机

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为何没有成功替换而焦躁,我还有许多需要学习改进的地方。

猜你喜欢

转载自www.cnblogs.com/zzzi/p/11376789.html