[Tutor] stack class

Reed O'Brien reed at reedobrien.com
Sat Jul 12 08:39:33 CEST 2008


On Jul 11, 2008, at 7:54 PM, Christopher Spears wrote:

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

I understand that this is an exercise; but I think it might be  
interesting for you to also look at collections.deque
http://docs.python.org/lib/deque-objects.html

>
>
> #!/usr/bin/python
>
> class Stack(list):
>    def isempty(self):
>        length = len(self)
>        if length == 0:
> 	    return True
> 	else:
> 	    return False
> 	
>    def peek(self):
>        length = len(self)
> 	if length == 0:
> 	    return 0
> 	else:
> 	    last_index = length - 1
>            return self[last_index]
>
>    def stackpop(self):
>        length = len(self)
> 	if length == 0:
> 	    print "Empty list!"
> 	else:
> 	    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: ")
>
>        try:
>            choice = int(choice_string)
>        except ValueError:
>            sys.exit("Not an integer!  Goodbye!")
>
>        if choice == 1:
> 	    if stack.isempty():
> 	        print "Stack is empty"
> 	    else:
>                peek_val = stack.peek()
> 	        print peek_val
>        elif choice == 2:
> 	    if "pop" in dir(list):
>                pop_val = stack.pop()
> 	        print pop_val
> 	    else:
> 	        pop_val = stack.stackpop()
> 		print pop_val
>        elif choice == 3:
> 	    push_val = raw_input("Push this value on stack: ")
>            stack.push(push_val)
> 	    print stack
>        elif choice == 4:
>            print "Goodbye!"
> 	    x = False
>        else:
> 	    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.
>
>
>
> _______________________________________________
> Tutor maillist  -  Tutor at python.org
> http://mail.python.org/mailman/listinfo/tutor



More information about the Tutor mailing list