Infix à postfix de conversion en Python

J'ai commencé à la résolution de la Structure de Données des problèmes en Python. Je suis la mise en œuvre de infix à postfix, mais pas en mesure de corriger une erreur dans mon programme. La dernière instruction de retour où j'ai effectuer l'opération de jointure a d'entrée de type AUCUN.

Quand j'ai commencé le débogage, j'ai trouvé que dans cette partie de code, quelque chose se passe mal après la première opération push ( * ). Après que quand je fais de la pop() retourne NONE au lieu de retourner *. Quelqu'un peut s'il vous plaît signaler, qu'est-ce que l'erreur ici?

    *else:
        while (not s.isEmpty()) and (prec[s.peek()] >= prec[token]):
            #print token
            outlst.append(s.pop())
            #print outlst

        s.push(token)
        print (s.peek())*

Infix à Postfix de conversion:

from StackClass import StackClass

def infixtopostfix(infixexpr):

    s=StackClass()
    outlst=[]
    prec={}
    prec['/']=3
    prec['*']=3
    prec['+']=2
    prec['-']=2
    prec['(']=1
    oplst=['/','*','+','-']

    tokenlst=infixexpr.split()
    for token in tokenlst:
        if token in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' or token in '0123456789':
            outlst.append(token)

        elif token == '(':
            s.push(token)

        elif token == ')':
            topToken=s.pop()
            while topToken != '(':
                outlst.append(topToken)
                topToken=s.pop()
        else:
            while (not s.isEmpty()) and (prec[s.peek()] >= prec[token]):
                #print token
                outlst.append(s.pop())
                #print outlst

            s.push(token)
            print (s.peek())

    while not s.isEmpty():
        opToken=s.pop()
        outlst.append(opToken)
        #print outlst
    return outlst
    #return " ".join(outlst)

print (infixtopostfix("A * B + C * D"))

OriginalL'auteur mrsan22 | 2014-12-21