python实现四则元算

来源:互联网 发布:哔哩哔哩录制软件 编辑:程序博客网 时间:2024/04/28 22:06

这个算法是在阅读大话数据结构中看到的,里面讲到在讲到实现四则元算最好的数据结构是栈;栈遵循后进先出,这与我们做数学题从左到右的认知是一样的。

有兴趣的同学可以去了解下,下面上代码

#coding:utf8def opNum(data):    dataSpace = []     lableSpace = []     h = '*,/'    for i  in data:        if i  in "-,+,*,/,(,)":            if i == ")":                while lableSpace != []:                    k = lableSpace.pop()                    if k == "(":                        break                    f = dataSpace.pop()                    s = dataSpace.pop()                    dataSpace.append(str(eval("%s%s%s"%(s,k,f))))                              else:                if lableSpace != []:                    p = lableSpace.pop()                    lableSpace.append(p)                    if i in h  and  p not in h:                        lableSpace.append(i)                    elif i not in h and p in h:                        while lableSpace != []:                            f = dataSpace.pop()                            s = dataSpace.pop()                            b = lableSpace.pop()                            dataSpace.append(str(eval("%s%s%s"%(s,b,f))))                        lableSpace.append(i)                      else:                                                  lableSpace.append(i)                else:                    lableSpace.append(i)                else:            dataSpace.append(i)    while lableSpace != []:        f = dataSpace.pop()        s = dataSpace.pop()        b = lableSpace.pop()        dataSpace.append(str(eval("%s%s%s"%(s,b,f))))    return  int(dataSpace[0])                               if __name__=='__main__':    #data = ['9','+','(','3','-','1',')','*','3','+','10','/','2']    data = ['3','+','8','-','(','(','3','-','1',')','+','2',')','*','1']    print opNum(data)


0 0
原创粉丝点击