T
tom
Hi! Im new to Python and doing exercise found from internet. It is
supposed to evaluate expression given with postfix operator using
Stack() class.
class Stack:
def __init__(self):
self.items = []
def push(self, item):
self.items.append(item)
def pop(self):
return self.items.pop()
def isEmpty(self):
return (self.items == [])
def evaluatePostfix(expr):
import re
tokenList = re.split(" ([^0-9])", expr)
stack = Stack()
for token in tokenList:
if token == '' or token == ' ':
continue
if token == '+':
sum = stack.pop() + stack.pop()
stack.push(sum)
elif token == '*':
product = stack.pop() * stack.pop()
stack.push(product)
else:
stack.push(int(token))
return stack.pop()
print evaluatePostfix("56 47 + 2 *")
Errormsg:
Traceback (most recent call last):
File "C:\*\postfix1.py", line 31, in <module>
print evaluatePostfix("56 47 + 2 *")
File "C:\*\postfix1.py", line 28, in evaluatePostfix
stack.push(int(token))
ValueError: invalid literal for int() with base 10: '56 47'
How can I avoid the error and get desired result?
supposed to evaluate expression given with postfix operator using
Stack() class.
class Stack:
def __init__(self):
self.items = []
def push(self, item):
self.items.append(item)
def pop(self):
return self.items.pop()
def isEmpty(self):
return (self.items == [])
def evaluatePostfix(expr):
import re
tokenList = re.split(" ([^0-9])", expr)
stack = Stack()
for token in tokenList:
if token == '' or token == ' ':
continue
if token == '+':
sum = stack.pop() + stack.pop()
stack.push(sum)
elif token == '*':
product = stack.pop() * stack.pop()
stack.push(product)
else:
stack.push(int(token))
return stack.pop()
print evaluatePostfix("56 47 + 2 *")
Errormsg:
Traceback (most recent call last):
File "C:\*\postfix1.py", line 31, in <module>
print evaluatePostfix("56 47 + 2 *")
File "C:\*\postfix1.py", line 28, in evaluatePostfix
stack.push(int(token))
ValueError: invalid literal for int() with base 10: '56 47'
How can I avoid the error and get desired result?