一、python的堆栈遵守:先进后出的原则。
stack = []
def pushit():
stack.append(input('Enter new string:').strip())
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 = 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()
运行结果:
p(U)sh
p(O)p
(V)iew
(Q)uit
Enter choice:u
You picked:[u]
Enter new string:1
p(U)sh
p(O)p
(V)iew
(Q)uit
Enter choice:u
You picked:[u]
Enter new string:2
p(U)sh
p(O)p
(V)iew
(Q)uit
Enter choice:u
You picked:[u]
Enter new string:3
p(U)sh
p(O)p
(V)iew
(Q)uit
Enter choice:u
You picked:[u]
Enter new string:4
p(U)sh
p(O)p
(V)iew
(Q)uit
Enter choice:u
You picked:[u]
Enter new string:5
p(U)sh
p(O)p
(V)iew
(Q)uit
Enter choice:u
You picked:[u]
Enter new string:6
p(U)sh
p(O)p
(V)iew
(Q)uit
Enter choice:p
You picked:[p]
Invalid option,try again
p(U)sh
p(O)p
(V)iew
(Q)uit
Enter choice:o
You picked:[o]
Removed [ 6 ]
p(U)sh
p(O)p
(V)iew
(Q)uit
Enter choice:o
You picked:[o]
Removed [ 5 ]
p(U)sh
p(O)p
(V)iew
(Q)uit
Enter choice:o
You picked:[o]
Removed [ 4 ]
p(U)sh
p(O)p
(V)iew
(Q)uit
Enter choice:o
You picked:[o]
Removed [ 3 ]
p(U)sh
p(O)p
(V)iew
(Q)uit
Enter choice:o
You picked:[o]
Removed [ 2 ]
p(U)sh
p(O)p
(V)iew
(Q)uit
Enter choice:o
You picked:[o]
Removed [ 1 ]
p(U)sh
p(O)p
(V)iew
(Q)uit
Enter choice:o
You picked:[o]
Cannot pop from an empty stack!
p(U)sh
p(O)p
(V)iew
(Q)uit
Enter choice:v
You picked:[v]
[]
p(U)sh
p(O)p
(V)iew
(Q)uit
Enter choice:v
You picked:[v]
[]
p(U)sh
p(O)p
(V)iew
(Q)uit
Enter choice:u
You picked:[u]
Enter new string:1
p(U)sh
p(O)p
(V)iew
(Q)uit
Enter choice:u
You picked:[u]
Enter new string:2
p(U)sh
p(O)p
(V)iew
(Q)uit
Enter choice:u
You picked:[u]
Enter new string:3
p(U)sh
p(O)p
(V)iew
(Q)uit
Enter choice:u
You picked:[u]
Enter new string:4
p(U)sh
p(O)p
(V)iew
(Q)uit
Enter choice:u
You picked:[u]
Enter new string:5
p(U)sh
p(O)p
(V)iew
(Q)uit
Enter choice:u
You picked:[u]
Enter new string:6
p(U)sh
p(O)p
(V)iew
(Q)uit
Enter choice:u
You picked:[u]
Enter new string:7
p(U)sh
p(O)p
(V)iew
(Q)uit
Enter choice:u
You picked:[u]
Enter new string:8
p(U)sh
p(O)p
(V)iew
(Q)uit
Enter choice:u
You picked:[u]
Enter new string:9
p(U)sh
p(O)p
(V)iew
(Q)uit
Enter choice:v
You picked:[v]
['1', '2', '3', '4', '5', '6', '7', '8', '9']
p(U)sh
p(O)p
(V)iew
(Q)uit
Enter choice:q
You picked:[q]
二、队列遵守:先进先出的原则。
queue = []
def enQ():
queue.append(input('Enter new string:').strip())
def deQ():
if len(queue) == 0:
print('Cannot pop from an empty queue!')
else:
print('Removed [',queue.pop(0),']')
def viewQ():
print (queue) #calls str() internally
CMDs = {'e':enQ,'d':deQ,'v':viewQ}
def showmenu():
pr = """
(E)nqueue
(D)equeue
(V)iew
(Q)uit
Enter choice:"""
while True:
while True:
try:
choice = input(pr).strip()[0].lower()
except (EOFError,KeyboardInterrupt,IndexError):
choice = 'q'
print('\nYou picked:[%s]' % choice)
if choice not in 'devq':
print('Invalid option,try again')
else:
break
if choice == 'q':
break
CMDs[choice]()
if __name__ == '__main__':
showmenu()
结果:
(E)nqueue
(D)equeue
(V)iew
(Q)uit
Enter choice:e
You picked:[e]
Enter new string:12
(E)nqueue
(D)equeue
(V)iew
(Q)uit
Enter choice:e
You picked:[e]
Enter new string:23
(E)nqueue
(D)equeue
(V)iew
(Q)uit
Enter choice:e
You picked:[e]
Enter new string:34
(E)nqueue
(D)equeue
(V)iew
(Q)uit
Enter choice:e
You picked:[e]
Enter new string:45
(E)nqueue
(D)equeue
(V)iew
(Q)uit
Enter choice:e
You picked:[e]
Enter new string:56
(E)nqueue
(D)equeue
(V)iew
(Q)uit
Enter choice:v
You picked:[v]
['12', '23', '34', '45', '56']
(E)nqueue
(D)equeue
(V)iew
(Q)uit
Enter choice:d
You picked:[d]
Removed [ 12 ]
(E)nqueue
(D)equeue
(V)iew
(Q)uit
Enter choice:v
You picked:[v]
['23', '34', '45', '56']
You picked:[q]