栈是一种"后进先出"的数据结构(LIFO),是一种操作受限的线性结构,数据只能从栈顶进入和栈顶出去。示意图如下:

代码实现方式如下:
1 #!/usr/bin/env python
2
3 stack = []
4
5 def pushstack():
6 stack.append(raw_input('Enter new string: '))
7
8 def popstack():
9 if len(stack) == 0:
10 print 'Cannot pop from empty stack!'
11 else:
12 print 'Removed [', stack.pop(), ']'
13
14 def viewstack():
15 print stack
16
17 CMDs = {'u':pushstack, 'o':popstack, 'v':viewstack}
18
19 def showmenu():
20 pr = """
21 p(U)sh
22 P(O)p
23 (V)iew
24 (Q)uit
25 Enter choice:"""
26
27 while True:
28 try:
29 choice = raw_input(pr).strip()[0].lower()
30 except(EOFError, keyboardInterrupt, IndexError):
31 choice = 'q'
32
33 print '\nYou picked: [%s]' % choice
34 if choice not in 'uovq':
35 print 'Invalid option, try again'
36 continue
37
38 if choice == 'q':
39 break
40
41 CMDs[choice]()
42
43
44 if __name__ == '__main__':
45 showmenu()
测试现象:
1 [root@localhost python]# python stack.py 2 3 p(U)sh 4 P(O)p 5 (V)iew 6 (Q)uit 7 Enter choice:u 8 9 You picked: [u] 10 Enter new string: abc 11 12 p(U)sh 13 P(O)p 14 (V)iew 15 (Q)uit 16 Enter choice:u 17 18 You picked: [u] 19 Enter new string: cde 20 21 p(U)sh 22 P(O)p 23 (V)iew 24 (Q)uit 25 Enter choice:u 26 27 You picked: [u] 28 Enter new string: 123 29 30 p(U)sh 31 P(O)p 32 (V)iew 33 (Q)uit 34 Enter choice:v 35 36 You picked: [v] 37 ['abc', 'cde', '123'] 38 39 p(U)sh 40 P(O)p 41 (V)iew 42 (Q)uit 43 Enter choice:o 44 45 You picked: [o] 46 Removed [ 123 ] 47 48 p(U)sh 49 P(O)p 50 (V)iew 51 (Q)uit 52 Enter choice:o 53 54 You picked: [o] 55 Removed [ cde ] 56 57 p(U)sh 58 P(O)p 59 (V)iew 60 (Q)uit 61 Enter choice:v 62 63 You picked: [v] 64 ['abc']