Passing Values
Remco Gerlich
scarblac at pino.selwerd.nl
Tue Feb 13 18:06:50 EST 2001
More information about the Python-list mailing list
Tue Feb 13 18:06:50 EST 2001
- Previous message (by thread): Parsing a line with Python
- Next message (by thread): Passing Values
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
mike.mellor at tbe.com <mike.mellor at tbe.com> wrote in comp.lang.python: > I am working on an RPN calculator program, using a four level stack. > I initialize it as: > > stack = [0.0,0.0,0.0,0.0] > > I am noticing problems with the following two functions (xStack and > yStack are Entry widgets). clearer is supposed to clear the values > of the stack, and RollDown is supposed to "roll the stack" down. > > def clearer(event): > yStack.delete(0,END) > xStack.delete(0,END) > stack = [0.0, 0.0, 0.0, 0.0] > print 'Clear ' + str(stack) > for i in range(4): > print 'Stack ' + `i` + ' ' + str(stack[i]) The stack you use here is a local variable. It has no effect on the global variable also named stack. Solution: put 'global stack' as the first line of the function. > def RollDown(event): > stack[0] = stack[1] > stack[1] = stack[2] > stack[2] = stack[3] > try: > stack[3] = float(xStack.get()) > except ValueError: > stack[3] = 0.0 > xStack.delete(0,END) > xStack.insert(0,stack[0]) > yStack.delete(0,END) > yStack.insert(0,str(stack[1])) > print 'Roll down ' + str(stack) > for i in range(4): > print 'Stack ' + `i` + ' ' + str(stack[i]) Here, you never directly assign to stack, so Python assumes you meant the global. This function uses the global stack. > The console reports that the stack is cleared, but when I roll the > stack down, old values pop in. Do I need to use a deepcopy to pass > the values from one stack location to the next (stack[0] = deepcopy > (stack[1])) or is there a better way to do this? Instead of stack[0]=stack[1]; stack[1]=stack[2]; stack[2]=etc, you simply want to do 'del stack[0]'. Then add the new element with stack.append(0.0). -- Remco Gerlich
- Previous message (by thread): Parsing a line with Python
- Next message (by thread): Passing Values
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list