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的代码风格,清晰,简洁,务实的特点。