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
 
 
 
posted @ 2020-09-23 12:53  Edward_han  阅读(306)  评论(0)    收藏  举报