[Tutor] stack class

Christopher Spears cspears2002 at yahoo.com
Sat Jul 12 01:54:18 CEST 2008

For another Core Python Programming question, I created a stack class.  I then put the class into a script to test it:


class Stack(list):
    def isempty(self):
        length = len(self)
        if length == 0:
	    return True
	    return False
    def peek(self):
        length = len(self)
	if length == 0:
	    return 0
	    last_index = length - 1
            return self[last_index]
    def stackpop(self):
        length = len(self)
	if length == 0:
	    print "Empty list!"
	    last_index = length - 1
	    stackpop_val = self[last_index]
	    self = self[:last_index]
	    return stackpop_val
    def push(self, value):
        return self.append(value)
if __name__ == '__main__':
    x = True
    stack = Stack()
    print "Pick an option to modify stack: "
    while x == True:
	print "1) Peek at the last value"
	print "2) Pop off the last value"
	print "3) Push a value on the stack"
	print "4) Quit Program"
	choice_string = raw_input("Make a choice: ")
            choice = int(choice_string)
        except ValueError:
            sys.exit("Not an integer!  Goodbye!")
        if choice == 1:
	    if stack.isempty():
	        print "Stack is empty"
                peek_val = stack.peek()
	        print peek_val
        elif choice == 2:
	    if "pop" in dir(list):
                pop_val = stack.pop()
	        print pop_val
	        pop_val = stack.stackpop()
		print pop_val
        elif choice == 3:
	    push_val = raw_input("Push this value on stack: ")
	    print stack
        elif choice == 4:
            print "Goodbye!"
	    x = False
	    x = False
            sys.exit("Wrong response Goodbye!")

According to the question, I should test if the pop() function is available.  If that function is not available, the stack should use a pop() method of my own design.  I think I solved the problem, but I am not sure how to test it because Python 2.4 is installed on my computer.


More information about the Tutor mailing list