Python是"一种解释型的、面向对象的、带有动态语义的高级程序设计语言"。最重要的是它是一种使你在编程时能够保持自己风格的程序设计语。你不用费什么劲就可以实现你想要的功能,并且清晰易懂。

长话短说,先看代码:

堆栈示例:

代码文件stack.py:

 1 #!/usr/bin/env python
 2 stack = []
 3 
 4 def pushit():
 5     stack.append(raw_input("enter a element:").strip())
 6 def popit():
 7     if len(stack) == 0:
 8         print "\nyou can't pop from a empty stack!"
 9     else:
10         print  'Removed [', `stack.pop()`, ']'
11         
12 def viewit():
13     print stack
14 
15 CMDs = {'u': pushit, 'o': popit, 'v': viewit,}
16 
17 def showmenu():
18     pr = """
19     p(U)sh
20     p(O)p
21     (V)iew
22     (Q)uit
23     Enter a choice:
24     
25     """
26     
27     while True:
28         while True:
29             try:
30                 choice = raw_input(pr).strip()[0].lower()
31             except(EOFError, KeyboardInterrupt, IndexError):
32                 choice = 'q'
33             print "\nyou picked [%s]" %  choice
34             if choice not in 'uovq':
35                 print " Invalid options ! try again."
36             else:
37                 break
38         if choice == 'q':
39             break
40         CMDs[choice]()
41 if __name__ == '__main__':
42     showmenu()
43                 

注:行1:用来在类Unix平台上直接运行脚本时发挥作用

  行2:新建一个空的列表用作堆栈的容器

  行4~13:定义三个函数:popit(),pushit(),viewit()

  行15:定义一个字典,各用一个字母来分别映射三个函数名。

  行17~40:定义showmenu()函数,用来显示菜单,用了两层While True死循环

  行40:注意这种动态调用不同函数的方式

  行41~42:用来检查当前脚本是否是直接运行的,若是直接运行的,便执行此段代码,即调用showmenu()

队列示例:

代码文件queue.py:

 1 #!/usr/bin/env python
 2 queue = []
 3 
 4 def enQ():
 5     queue.append(raw_input("Enter a string :").strip())
 6 def deQ():
 7     if len(queue) == 0:
 8         print "can't pop from a empty queue!"
 9     else:
10         print 'Removed [', `queue.pop(0)`, ']'
11         
12 #----------------------------------------------------------------------
13 def viewQ():
14     """view the queue"""
15     print queue
16     
17 CMDs = {'e':enQ, 'd':deQ, 'v':viewQ}
18 def showMenu():
19     pr = '''
20     (E)nqueue
21     (D)equeue
22     (V)iew
23     (Q)uit
24     Enter your choice:
25     '''
26     while True:
27         while True:
28             try:
29                 choice = raw_input(pr).strip()[0].lower()
30             except(EOFError, KeyboardInterrupt, IndexError):
31                 choice = 'q'
32             print "\nyou picked :[%s]" %  choice
33             if choice not in 'devq':
34                 print 'Invalid choice,try agian!'
35             else:
36                 break
37         if choice == 'q':
38             break
39         CMDs[choice]()
40 if __name__ == '__main__':
41     showMenu()
42     

注:与上面stack.py的逻辑十分相似,不再详述。

小结:通过列表的结构,分别模仿了堆栈和队列,理解Python的代码风格,清晰,简洁,务实的特点。