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 相关文章推荐
web.py在模板中输出美元符号的方法
Aug 26 Python
Windows下用py2exe将Python程序打包成exe程序的教程
Apr 08 Python
python实现字符串和日期相互转换的方法
May 13 Python
如何用Python合并lmdb文件
Jul 02 Python
TensorFlow利用saver保存和提取参数的实例
Jul 26 Python
对python中字典keys,values,items的使用详解
Feb 03 Python
django的settings中设置中文支持的实现
Apr 28 Python
OpenCV 轮廓检测的实现方法
Jul 03 Python
python实现简易淘宝购物
Nov 22 Python
Pytorch: 自定义网络层实例
Jan 07 Python
Python request使用方法及问题总结
Apr 26 Python
Python定时任务APScheduler安装及使用解析
Aug 07 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部分常见问题总结
2006/10/09 PHP
zen cart新进商品的随机排序修改方法
2010/09/10 PHP
PHP 循环删除无限分类子节点的实现代码
2013/06/21 PHP
自制PHP框架之设计模式
2017/05/07 PHP
基于JQuery 滑动与动画的说明介绍
2013/04/18 Javascript
JS+CSS实现可拖动的弹出提示框
2015/02/16 Javascript
详解JavaScript数组的操作大全
2015/10/19 Javascript
浅谈Node.js轻量级Web框架Express4.x使用指南
2017/05/03 Javascript
详解React native全局变量的使用(跨组件的通信)
2017/09/07 Javascript
vue2使用keep-alive缓存多层列表页的方法
2018/09/21 Javascript
JS实现小米轮播图
2020/09/21 Javascript
简单谈谈offsetleft、offsetTop和offsetParent
2020/12/04 Javascript
Vue 集成 PDF.js 实现 PDF 预览和添加水印的步骤
2021/01/22 Vue.js
python正则表达式中的括号匹配问题
2014/12/14 Python
Python实现的批量下载RFC文档
2015/03/10 Python
Python 异常处理的实例详解
2017/09/11 Python
Python对列表去重的多种方法(四种方法)
2017/12/05 Python
Python实现基于二叉树存储结构的堆排序算法示例
2017/12/08 Python
python实现Zabbix-API监控
2018/09/17 Python
Python 支付整合开发包的实现
2019/01/23 Python
对Python w和w+权限的区别详解
2019/01/23 Python
利用Python复制文件的9种方法总结
2019/09/02 Python
h5实现获取用户地理定位的实例代码
2017/07/17 HTML / CSS
美国时尚大码女装购物网站:Avenue
2019/05/24 全球购物
新东方旗下远程教育网站:新东方在线
2020/03/19 全球购物
沙特阿拉伯排名第一的在线时尚购物应用程序:1Zillion
2020/08/08 全球购物
女子职高个人自荐书
2014/02/01 职场文书
房地产财务部员工岗位职责
2014/03/12 职场文书
幼师求职自荐信
2014/05/31 职场文书
幼儿园感恩节活动方案2014
2014/10/11 职场文书
2014财务年终工作总结
2014/12/08 职场文书
土建技术员岗位职责
2015/04/11 职场文书
党员转正介绍人意见
2015/06/03 职场文书
2016年教师学习廉政准则心得体会
2016/01/20 职场文书
「天才王子的赤字国家重生术」妮妮姆·拉雷粘土人开订
2022/03/21 日漫
Python创建SQL数据库流程逐步讲解
2022/09/23 Python