deque的应用,实现用户的历史记录
前奏
>>> from collections import deque
>>> q = deque([],5) #定义一个初值为空列表,最大长度为5的队列
>>> q
deque([], maxlen=5)
>>> q.append(1)
>>> q
deque([1], maxlen=5)
>>> q.append(2)
>>> q.append(3)
>>> q.append(4)
>>> q.append(5)
>>> q
deque([1, 2, 3, 4, 5], maxlen=5)
>>> q.append(6)
>>> q
deque([2, 3, 4, 5, 6], maxlen=5)
>>> import pickle
>>> pickle.dump(q, open('history','w')) #将上述队列q序列化至本地文件
>>> q2 = pickle.load(open('history')) #反序列化文件history的内容至内存
>>> q2
deque([2, 3, 4, 5, 6], maxlen=5)
猜数游戏小程序,有历史记录功能,显示最近猜过的数字
from random import randint from collections import deque N = randint(0,100) history = deque([],5) def guess(K): if K == N: print 'right' return True if K < N: print '%s is less' % K else: print '%s is greater' % K return False while True: line = raw_input("please input a number: ") #阻塞 if line.isdigit(): K = int(line) history.append(K) #添加历史记录 if guess(K): break elif line == 'history' or line == 'h?': #定义打印历史记录的命令 print list(history)
如果历史记录需要保存至本地,请参见前奏的序列化
显示运行结果:
please input a number: 55
55 is less
please input a number: 57
57 is less
please input a number: 77
77 is less
please input a number: 80
80 is less
please input a number: 90
90 is greater
please input a number: h?
[55, 57, 77, 80, 90]
please input a number: 85
85 is greater
please input a number: 84
84 is greater
please input a number: h?
[77, 80, 90, 85, 84]
please input a number: 83
83 is greater
please input a number: 82
right