-1

interactivepython.org から Python を学んでいます。このサイトには、後置式を評価するためのコードがあります..しかし、前置式についてもどのように行われるかを確認したいと思います。コードは次のとおりです。

def postfixEval(postfixExpr):
    operandStack = Stack()
    tokenList = postfixExpr.split()

    for token in tokenList:
        if token in "0123456789":
            operandStack.push(int(token))
        else:
            operand2 = operandStack.pop()
            operand1 = operandStack.pop()
            result = doMath(token,operand1,operand2)
            operandStack.push(result)
    return operandStack.pop()

def doMath(op, op1, op2):
    if op == "*":
        return op1 * op2
    elif op == "/":
        return op1 / op2
    elif op == "+":
        return op1 + op2
    else:
        return op1 - op2

print(postfixEval('7 8 + 3 2 + /'))

このレッスンを正しく理解している場合、オペランドの順序を変更するだけでよいでしょうか?

4

2 に答える 2

0

いいえ、オペランドは同じ順序になります。違いは、オペランドの後ではなく前に操作を実行する必要があることです。これは、オペランドを評価するために再帰呼び出しを行う必要がある可能性が高いという事実によって複雑になります。オペランドが演算で始まる場合、再帰します。

于 2016-02-15T22:54:46.587 に答える