例6.3
代码
#-*-coding: utf-8-*-
# 列表构建堆栈
stack = [] # 初始化堆栈
# pushit()函数添加一个元素(通过提示由用户输入)到堆栈中。
def pushit():
stack.append(raw_input("Enter new string: ").strip())
# popit()函数从堆栈中移除一个元素(最新的那个)。
def popit():
if len(stack) == 0:
print "Cannot pop from an empty stack!"
else:
print 'Removed [', `stack.pop()`, ']' # 注意该处使用反单引号
def viewstack():
print stack # calls str() internally
CMDs = {'u': pushit, 'o': popit, 'v': viewstack}
def showmenu():
pr = """
p(U)sh
p(O)p
(V)iew
(Q)uit
Enter choice: """
while True:
while True:
try:
choice = raw_input(pr).strip()[0].lower()
except (EOFError, KeyboardInterrupt, IndexError):
choice = 'q'
print '\nYou picked: [%s]' % choice
if choice not in 'uovq':
print "Invalid option, try again."
else:
break
if choice == 'q':
break
CMDs[choice]()
if __name__ == "__main__":
showmenu()
反单引号与repr()函数的功能相同,它将其中的内容转为供机器读取的形式,也就是说当程序读至此处时,会自动执行反单引号内的内容(程序),这是目前理解。