题解 | #四则运算#

四则运算

https://www.nowcoder.com/practice/9999764a61484d819056f807d2a91f1e

import math
def jjcc(s):
    while '*' in s or '/' in s:
        for i in s:
            if i=='*':
                tmp=float(s[s.index(i)-1])*float(s[s.index(i)+1])
                s=s[:s.index(i)-1]+[tmp]+s[s.index(i)+2:]
                break
            elif i=='/':
                tmp=float(s[s.index(i)-1])/float(s[s.index(i)+1])
                s=s[:s.index(i)-1]+[tmp]+s[s.index(i)+2:]
                break
    while '+' in s or '-' in s:
        for i in s:
            if i=='+':
                tmp=float(s[s.index(i)-1])+float(s[s.index(i)+1])
                s=s[:s.index(i)-1]+[tmp]+s[s.index(i)+2:]
                break
            elif i=='-':
                if s.index('-') !=0:
                    tmp=float(s[s.index(i)-1])-float(s[s.index(i)+1])
                    s=s[:s.index(i)-1]+[tmp]+s[s.index(i)+2:]
                else:
                    s=[-1*s[1]]+s[2:]
                break
    return s 
t=''.join([' '+i+' ' if not i.isnumeric() else i for i in input()])
t=t.split()

while '(' in t or '[' in t or '{' in t:
    for i in t[::-1]:
        if i=='(':
            idx1=len(t)-1-t[::-1].index('(')
            idx2 =idx1+1+t[idx1+1:].index(')')
            tmp=jjcc(t[idx1+1:idx2])
            t=t[:idx1]+tmp+t[idx2+1:]
        elif i =='{':
            idx1 = len(t) - 1 - t[::-1].index('{')
            idx2 =idx1+1+t[idx1+1:].index('}')
            tmp=jjcc(t[idx1+1:idx2])
            t = t[:idx1] + tmp + t[idx2 + 1:]
        elif i =='[':
            idx1 = len(t) - 1 - t[::-1].index('[')
            idx2 =idx1+1+t[idx1+1:].index(']')
            tmp=jjcc(t[idx1+1:idx2])
            t = t[:idx1] + tmp + t[idx2 + 1:]
print(round(jjcc(t)[0]))

全部评论

相关推荐

11-06 10:58
已编辑
门头沟学院 嵌入式工程师
双非25想找富婆不想打工:哦,这该死的伦敦腔,我敢打赌,你简直是个天才,如果我有offer的话,我一定用offer狠狠的打在你的脸上
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务