On Apr 3, 11:17 am, Steve Holden <[EMAIL PROTECTED]> wrote: > [EMAIL PROTECTED] wrote: > > 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) > > If you add a print statement here I think you will find that the > tokenisation here isn't really what you want: > > >>> expr = "56 47 + 2 *" > >>> re.split(" ([^0-9])", expr) > ['56 47', '+', ' 2', '*', ''] > > > > > 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? > > I'd try using > > tokenList = split(expr) > > instead - this has the added benefit of removing the spaces, so you can > simplify your code by removing the case that handles empty tokens and > sapaces, I suspect. > > regards > Steve > -- > Steve Holden +44 150 684 7255 +1 800 494 3119 > Holden Web LLC/Ltd http://www.holdenweb.com > Skype: holdenweb http://del.icio.us/steve.holden > Recent Ramblings http://holdenweb.blogspot.com
Steve, How do you do "tokenList = split(expr)"? There is no builtin called "split". Mike -- http://mail.python.org/mailman/listinfo/python-list