Python保存并浏览用户的历史记录


Posted in Python onApril 29, 2022

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

实际案例:

很多应用程序都有浏览用户的历史记录的功能,

例如:

浏览器可以查看最近访问过的网页;

视频播放器可以查看最近播放过视频文件;

Shell可以查看用户输入过的命名;

... ...

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

注:历史记录不能是无限条需要加限定。只显示最近5次的历史记录,其它的抛弃掉。

解决方案:

使用容量为n的队列存储历史记录

使用标准库collections中的deque,它是一个双端循环队列。

程序退出前,可以使用pickle将队列对象存入文件,再次运行程序时将其导入。

2、代码演示

(1)deque双端队列简单使用

from collections import deque
 
# 创建带有容量的队列
q = deque([], 5)
# 一次添加多个元素
a = [1, 2, 3, 4, 5]
q.extend(a)
print(q)
# 添加第6个元素,查看队列时发现第1个元素已经被挤出去了
q.append(6)
print(q)

(2)pickle保存对象到文件中或读取文件中对象

q = deque([1, 2, 3, 4, 5], maxlen=5)
# 存储对象到文件
pickle.dump(q, open('history', 'wb'))
# 读取文件中对象
q2 = pickle.load(open('history', 'rb'))
print(q2)

(3)实现猜数字游戏的历史记录

from random import randint
from collections import deque
import pickle
# 猜数字游戏,首先产生一个0到100数字,然后让用户猜
N = randint(0, 100)
print('答案:' + str(N))
# 初始化队列,容量为5
history = deque([], 5)
# 读取文件中的历史记录
history = pickle.load(open('history', 'rb'))
print(history)
def guess(k):
    if k == N:
        print('right')
        return True
    if k < N:
        print('%s is less-than N' % k)
    else:
        print('%s is greater-than N' % k)
    return False
while True:
    line = 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))
# 将历史记录保存到文件中
pickle.dump(history, open('history', 'wb'))

到此这篇关于Python实现历史记录功能的文章就介绍到这了!


Tags in this post...

Python 相关文章推荐
python基于socket实现网络广播的方法
Apr 29 Python
深入理解Python中命名空间的查找规则LEGB
Aug 06 Python
python利用ffmpeg进行录制屏幕的方法
Jan 10 Python
Python实现二叉树前序、中序、后序及层次遍历示例代码
May 18 Python
使用django的objects.filter()方法匹配多个关键字的方法
Jul 18 Python
python智联招聘爬虫并导入到excel代码实例
Sep 09 Python
Python 元组拆包示例(Tuple Unpacking)
Dec 24 Python
python实现与redis交互操作详解
Apr 21 Python
pandas DataFrame 数据选取,修改,切片的实现
Apr 24 Python
解决python父线程关闭后子线程不关闭问题
Apr 25 Python
keras和tensorflow使用fit_generator 批次训练操作
Jul 03 Python
python中sys模块是做什么用的
Aug 16 Python
python解析json数据
Apr 29 #Python
python的html标准库
Apr 29 #Python
python和C/C++混合编程之使用ctypes调用 C/C++的dll
Apr 29 #Python
python数据处理之Pandas类型转换
Python实现将多张图片合成MP4视频并加入背景音乐
Python FuzzyWuzzy实现模糊匹配
Apr 28 #Python
PYTHON基于Pyecharts绘制常见的直角坐标系图表
You might like
一段php加密解密的代码
2007/07/16 PHP
PHP中用hash实现的数组
2011/07/17 PHP
apache中为php 设置虚拟目录
2014/12/17 PHP
详解PHP归并排序的实现
2016/10/18 PHP
thinkPHP js文件中U方法不被解析问题的解决方法
2016/12/05 PHP
php事务回滚简单实现方法示例
2017/03/28 PHP
ThinkPHP开发--使用七牛云储存
2017/09/14 PHP
PHP常见加密函数用法示例【crypt与md5】
2019/01/27 PHP
js保存当前路径(cookies记录)
2010/12/14 Javascript
jquery子元素过滤选择器使用示例
2013/06/24 Javascript
使用GruntJS构建Web程序之安装篇
2014/06/04 Javascript
使用console进行性能测试
2015/04/27 Javascript
Angularjs注入拦截器实现Loading效果
2015/12/28 Javascript
jquery淡入淡出效果简单实例
2016/01/14 Javascript
JQuery日历插件My97DatePicker日期范围限制
2016/01/20 Javascript
jQuery模拟物体自由落体运动(附演示与demo源码下载)
2016/01/21 Javascript
基于canvas实现的钟摆效果完整实例
2016/01/26 Javascript
easy ui datagrid 从编辑框中获取值的方法
2017/02/22 Javascript
在vue中实现简单页面逆传值的方法
2017/11/27 Javascript
使用layui前端框架弹出form表单以及提交的示例
2019/10/25 Javascript
JavaScript Event Loop相关原理解析
2020/06/10 Javascript
[02:24]DOTA2痛苦女王 英雄基础教程
2013/11/26 DOTA
python实现多线程的方式及多条命令并发执行
2016/06/07 Python
python开发简易版在线音乐播放器
2017/03/03 Python
利用标准库fractions模块让Python支持分数类型的方法详解
2017/08/11 Python
对Python3+gdal 读取tiff格式数据的实例讲解
2018/12/04 Python
CSS3 filter(滤镜)实现网页灰色或者黑色模式的代码
2020/11/30 HTML / CSS
美国在线旅行社:Crystal Travel
2018/09/11 全球购物
override和overload的区别
2016/03/09 面试题
中文系师范生自荐信
2013/10/01 职场文书
医院竞聘演讲稿
2014/05/16 职场文书
英语教育专业毕业生求职信
2014/08/28 职场文书
2015年植树节活动总结
2015/02/06 职场文书
如何做好员工培训计划?
2019/07/09 职场文书
mysql升级到5.7时,wordpress导数据报错1067的问题
2021/05/27 MySQL
python数字图像处理:图像的绘制
2022/06/28 Python