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如何查看系统网络流量的信息
Sep 12 Python
Python获取当前路径实现代码
May 08 Python
Python中使用支持向量机(SVM)算法
Dec 26 Python
Django框架多表查询实例分析
Jul 04 Python
Pandas读取MySQL数据到DataFrame的方法
Jul 25 Python
python实现祝福弹窗效果
Apr 07 Python
Apache,wsgi,django 程序部署配置方法详解
Jul 01 Python
python在新的图片窗口显示图片(图像)的方法
Jul 11 Python
python 对任意数据和曲线进行拟合并求出函数表达式的三种解决方案
Feb 18 Python
Django如何在不停机的情况下创建索引
Aug 02 Python
scrapy实践之翻页爬取的实现
Jan 05 Python
教你怎么用python实现字符串转日期
May 24 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
Cappuccino 卡布其诺咖啡之制作
2021/03/03 冲泡冲煮
Windows 下的 PHP-PEAR 安装方法
2010/11/20 PHP
php MessagePack介绍
2013/10/06 PHP
php实现插入排序
2015/03/29 PHP
PHP实现微信公众号验证Token的示例代码
2019/12/16 PHP
CCPry JS类库 代码
2009/10/30 Javascript
jQuery中获取Radio元素值的方法
2013/07/02 Javascript
jQuery插件jPaginate实现无刷新分页
2015/05/04 Javascript
JavaScript获得url查询参数的方法
2015/07/02 Javascript
JavaScript中的Repaint和Reflow用法详解
2015/07/27 Javascript
详解AngularJS控制器的使用
2016/03/09 Javascript
Angular 4.X开发实践中的踩坑小结
2017/07/04 Javascript
Vue动态组件实例解析
2017/08/20 Javascript
vue之debounce属性被移除及处理详解
2019/11/13 Javascript
vscode 配置vue+vetur+eslint+prettier自动格式化功能
2020/03/23 Javascript
浅谈vue中get请求解决传输数据是数组格式的问题
2020/08/03 Javascript
[01:46]DOTA2上海特锦赛小组赛英文解说KotlGuy采访
2016/02/27 DOTA
[01:38]【DOTA2亚洲邀请赛】Sumail——梦开始的地方
2017/03/03 DOTA
关于numpy中np.nonzero()函数用法的详解
2017/02/07 Python
python处理DICOM并计算三维模型体积
2019/02/26 Python
Django项目之Elasticsearch搜索引擎的实例
2019/08/21 Python
opencv python 图片读取与显示图片窗口未响应问题的解决
2020/04/24 Python
浅析python实现动态规划背包问题
2020/12/31 Python
海蓝之谜(LA MER)澳大利亚官方商城:全球高端奢华护肤品牌
2017/10/27 全球购物
爱尔兰领先的在线体育用品零售商:theGAAstore
2018/04/16 全球购物
Lentiamo荷兰:在线订购隐形眼镜、隐形眼镜液和太阳镜
2019/10/25 全球购物
照片礼物和装饰:MyPhoto
2019/11/02 全球购物
军校制空专业毕业生自我鉴定
2013/11/16 职场文书
远程教育心得体会
2014/01/03 职场文书
乡镇交通安全实施方案
2014/03/29 职场文书
二手房购房意向书范本
2014/04/01 职场文书
教师节活动总结
2014/08/29 职场文书
读《钢铁是怎样炼成的》有感:百炼方成钢
2019/11/05 职场文书
vue+iview实现手机号分段输入框
2022/03/25 Vue.js
Python何绘制带有背景色块的折线图
2022/04/23 Python
PyCharm 配置SSH和SFTP连接远程服务器
2022/05/11 Python