计算器代码

Posted GCat

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算器代码相关的知识,希望对你有一定的参考价值。

代码比较low,有时间在更新。

当时初学只是为了实现。

#实现加减乘除以及括号优先级解析))

import re

s = "1-2*((60-30+(-40/5)*(9-2*5/3+7/3*99/4*2998+10*568/14))-(-4*3)/(16-3*2))"
# s = "1-2*((60-30-8*(9-3+146902+405))-(-4*3)/(16-3*2))"
print(eval(s))


def retr(str):
    try:
        str = str.replace("--", "+")
        str = str.replace("++", "+")
        str = str.replace("-+", "-")
        str = str.replace("+-", "-")
    except:
        pass

    ret = re.search("\([^()]+\)", str)

    a = ret.group()
    print(a)
    if ret == None:
        pass
    else:
        suan = ret.group()
        suan = suan.replace("(", "")
        suan = suan.replace(")", "")
    return suan,a

# def th(str):

def hf(str):
    a = str[:2]
    if not a.isdigit():
        if a == "-+" or a == "+-":
            str = str.replace(a, "-")
    return str

def jjcc(str):
    nstr = hf(str)
    ret = re.search("(.*?\d+)(\D)(.*?\d+)", nstr)
    # print(ret.group())
    a = ret.group(2)
    c = int(ret.group(1))
    b = int(ret.group(3))
    if a == "+":
        end = c + b
    if a == "-":
        end = c - b
    if a == "*":
        end = c * b
    if a == "/":
        end = c / b
    return end

# print(jjcc(suan))
# print(jjcc("-+6*-1"))


# while True:
#     suan, a = retr(s)[0],retr(s)[1]
#     rep = str(jjcc(suan))
#     s = s.replace(a, rep)
#     print(s)

suan, a = retr(s)[0], retr(s)[1]
rep = str(jjcc(suan))
s = s.replace(a, rep)
# print(s)

suan, a = retr(s)[0], retr(s)[1]
rep = str(jjcc(suan))
s = s.replace(a, rep)
# print(s)

 

以上是关于计算器代码的主要内容,如果未能解决你的问题,请参考以下文章

golang代码片段(摘抄)

Vue3官网-高级指南(十七)响应式计算`computed`和侦听`watchEffect`(onTrackonTriggeronInvalidate副作用的刷新时机`watch` pre)(代码片段

10个JavaScript代码片段,使你更加容易前端开发。

10个JavaScript代码片段,使你更加容易前端开发。

如何在 python 中并行化以下代码片段?

Android:向活动添加片段