如何实现用户的历史记录功能(最多n条)?

需求:
很多应用程序都有浏览用户的历史记录的功能,例如:
1、浏览器可以查看最近访问的网页
2、视频播放器可以查看最近播放过的视频文件
3、shell可以查看用户输入过的命令

现在我们制作一个简单的猜数字的小游戏,
如何添加用户的历史记录功能,显示用户最近猜过的数字?

思路:
使用容量为n的队列来存储历史记录
使用标准库的中collections的deque,它是一个双端循环队列
使用pickle模块将历史记录存储到硬盘,以便下次启动再用

代码:

#!/usr/bin/python3
from random import randint
from collections import deque
import pickle,os

def guess(n,k):
    if n == k:
        print('猜对了,这个数字是%d.' % k)
        return True

    if n < k:
        print('猜大了,比%d小.' % k)

    elif n > k:
        print('猜小了,比%d大.' % k)
    return False

def main():
    n = randint(1,100)
    i = 1
    hq = deque([],5)
    if os.path.exists('history.pkl'):
        hq = pickle.load(open('history.pkl','rb'))
    while True:
        line = input('[%d] 请输入一个数字:' %  i)
        if line.isdigit(): # 判断字符串是否是只由数字组成
            k = int(line)
            hq.append(k)
            i += 1
            if guess(n,k):
                break
        elif line == 'quit':
            pickle.dump(hq,open('history.pkl','wb')) # 将历史记录保存到本地的文件中,以便下次运行还可以进行查看
            break
        elif line == 'h?':
            print(list(hq))

if __name__ == '__main__':
    main()
posted @ 2020-10-30 16:42  Richardo-M-Lu  阅读(290)  评论(0编辑  收藏  举报