Python写计算机

版权声明:版权归本人,仅供大家参考 https://blog.csdn.net/Dream____Fly/article/details/84189350

实现了计算器的加减乘除和带括号用算:

def Jsq(Num):
    global Sum
    d=[]
    for i in Num:   #在Num中遍历
        if i.isnumeric():   #判断是否是数字
            pass
        else:
            d.append(i)    #将遍历到的数字放在b列表中
    for i in Num:
        if i == "+" or i == "-" or i == "*" or i == "/":  #判断符号
            Num = Num.replace(i, ",")
    Num = Num.split(",")
    k=[]
    for i in Num:
        i=int(i)
        k.append(i)
    Sum=0
    for i in range(len(d)):
        if "*" in d and "/" in d:
            m = d.index("*")
            n = d.index("/")
            if m < n:
                Sum = k[m] * k[m + 1]
                k[m] = Sum
                del k[m + 1]
                d.remove(d[m])
                i = 0
            else:
                Sum = int(k[n]) / int(k[n + 1])
                k[n] = Sum
                del k[n + 1]
                d.remove(d[n])
                i = 0
        elif "*" in d:
            m = d.index("*")
            Sum = k[m] * k[m + 1]
            k[m] = Sum
            del k[m + 1]
            d.remove(d[m])
            i = 0
        elif "/" in d:
            n = d.index("/")
            Sum = k[n] / k[n + 1]
            k[n] = Sum
            del k[n + 1]
            d.remove(d[n])
            i = 0
    for i in range(len(d)):
        if "+" in d and "-" in d:
            m = d.index("+")
            n = d.index("-")
            if m < n:
                Sum = k[m] + k[m + 1]
                k[m] = Sum
                k.remove(k[m + 1])
                d.remove(d[m])
            else:
                Sum = k[n] - k[n + 1]
                k[n] = Sum
                k.remove(k[n + 1])
                d.remove(d[n])
            i = 0
        elif "+" in d:
            m = d.index("+")
            Sum = k[m] + k[m + 1]
            k[m] = Sum
            k.remove(k[m + 1])
            d.remove(d[m])
        elif "-" in d:
            n = d.index("-")
            Sum = k[n] - k[n + 1]
            k[n] = Sum
            k.remove(k[n + 1])
            d.remove(d[n])
        i = 0
    return Sum


def chazhao():
    global Nba
    global Num
    global m
    global n
    for i in Nba:
        if i == "(":
            m=Nba.rfind("(")
    n=Nba[m:]
    for i in n:
        if i ==")":
            c=n.find(")")
    Num=n[1:c]
    Jsq(Num)
    j=str(Sum)
    Nba=Nba.replace(Nba[m:m+c+1],j)

Nba=input("请输入计算公式:")

1+((3-2)*2+1)
while True:
    if "(" in Nba:
        chazhao()
    else:
        Jsq(Nba)
        print(Sum)
        break

猜你喜欢

转载自blog.csdn.net/Dream____Fly/article/details/84189350