Stack experiment
Terry Reedy
tjreedy at udel.edu
Tue Apr 3 12:30:54 EDT 2007
<tom at finland.com> wrote in message news:5QuQh.152$9L1.108 at read3.inet.fi...
| 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)
To see what is wrong, print tokenList.
tokenList = expr.split() is probably what you want
| 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?
| --
| http://mail.python.org/mailman/listinfo/python-list
|
More information about the Python-list
mailing list