用python写的可以简单演示栈的操作的小程序

这是一个用python写的模仿栈的操作方法的小程序。命令行界面,使用了cmd模块,也算是自己写着玩的吧。github地址为

git@github.com:cloudaice/stackview.git

以下为代码:

  1 # -*- coding: utf-8 -*-
2 import cmd
3 import sys
4 class stack:
5 def __init__(self):
6 self.lists=[]
7
8 def put(self,value):
9 self.lists.append(value)
10
11 def get(self):
12 lenth = len(self.lists)
13 if lenth:
14 print self.lists[lenth-1]
15 del self.lists[lenth-1]
16 else:
17 print "it is empty!"
18
19 class cstack(cmd.Cmd):
20 def __init__(self):
21 cmd.Cmd.__init__(self)
22 self.stack_set=dict()
23 self.stack=""
24 self.prompt=">>"
25 self.intro="""
26 new 栈名 新建一个栈
27 put 内容名称 将一个值压入栈当中
28 get 取出栈顶的内容
29 new 新建立一个栈
30 showdata 显示当前栈的所有内容
31 showstacks 显示当前所有建立的栈
32 delstack 栈名称 删除一个栈
33 cd 栈名称 切换当前栈
34 exit 推出程序
35 """
36
37 def help_exit(self):
38 print "推出系统"
39
40 def do_exit(self,line):
41 sys.exit()
42
43
44 def help_new(self):
45 print "建立一个新的栈"
46
47 def do_new(self,stackname):
48 if not stackname:
49 stackname = raw_input("请输入要建立的栈的名称\n")
50 while stackname in self.stack_set:
51 stackname = raw_input("请输入要建立的栈的名称\n")
52 print "您输入的栈的名称是: %s" % stackname
53 self.stack_set[stackname]=stack()
54 self.stack =stackname
55 print "您当前所在的栈名称是:%s" % self.stack
56
57
58 def help_put(self):
59 print "将一个值压入栈当中"
60
61 def do_put(self,value):
62 if not value:
63 value = raw_input("输入要压入栈的值\n")
64 print "您要压入栈中的值为 %s" % value
65 self.stack_set[self.stack].put(value)
66
67
68 def help_get(self):
69 print "从栈顶取出一个内容"
70
71 def do_get(self,stack):
72 self.stack_set[self.stack].get()
73
74
75 def help_showdata(self):
76 print "显示当前栈中的所有内容"
77
78 def do_showdata(self,stack):
79 if not len(self.stack_set):
80 print "目前没有任何栈"
81 else:
82 if len(self.stack_set[self.stack].lists):
83 print "栈底" , self.stack_set[self.stack].lists , "栈顶"
84 else:
85 print "该栈为空"
86
87
88 def help_showstacks(self):
89 print "显示当前建立的所有栈"
90
91 def do_showstacks(self,stack_set):
92 if len(self.stack_set):
93 for stack in self.stack_set:
94 print stack+"",
95 print "\n"
96 else:
97 print "目前没有任何栈"
98
99
100 def help_delstack(self):
101 print "删除一个栈"
102
103 def do_delstack(self,stackname):
104 if not stackname:
105 stackname = raw_input("输入栈的名称\n")
106 while not stackname in self.stack_set:
107 self.do_showstacks('')
108 stackname = raw_input("您输入的栈名称不存在,请重新输入栈的名称\n")
109 del self.stack_set[stackname]
110 print "栈 %s 已经删除"
111
112
113 def help_cd(self):
114 print "切换栈"
115
116 def do_cd(self,stackname):
117 print "当前使用的栈名是:%s" % self.stack
118 if not stackname:
119 stackname = raw_input("输入栈的名称\n")
120 while not stackname in self.stack_set:
121 self.do_showstacks('')
122 stackname = raw_input("您输入的栈名称不存在,请重新输入栈的名称\n")
123 self.stack=stackname
124 print "已经切换当前栈为: %s" % stackname
125
126
127 def help_prestack(self):
128 print "显示当前所在的栈"
129
130 def do_prestack(self,stack):
131 print "当前所在栈为:%s" % self.stack
132
133
134 do_q = do_exit
135
136 if __name__=='__main__':
137 stacks=cstack()
138 stacks.cmdloop()