from pythondsbasicstack import Stack def postfixEvalpostfixE

from pythonds.basic.stack import Stack

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 + /\'))

Modify the postfix evaluation algorithm so that it now handles exponentiation and modulo operations..

Solution

Hi, I have added required line of code to support ^ and % in postfix evaluation.

Please let me know in case of any issue.

from pythonds.basic.stack import Stack
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
elif op == \"%\":
return op1 % op2

elif op == \"+\":
return op1 + op2
else:
return op1 - op2
print(postfixEval(\'7 8 + 3 2 + /\'))

from pythonds.basic.stack import Stack def postfixEval(postfixExpr): operandStack = Stack() tokenList = postfixExpr.split() for token in tokenList: if token in
from pythonds.basic.stack import Stack def postfixEval(postfixExpr): operandStack = Stack() tokenList = postfixExpr.split() for token in tokenList: if token in

Get Help Now

Submit a Take Down Notice

Tutor
Tutor: Dr Jack
Most rated tutor on our site