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 相关文章推荐
tensorflow入门之训练简单的神经网络方法
Feb 26 Python
Python3中关于cookie的创建与保存
Oct 21 Python
详解python中的Turtle函数库
Nov 19 Python
Django admin.py 在修改/添加表单界面显示额外字段的方法
Aug 22 Python
Python实现二叉树的最小深度的两种方法
Sep 30 Python
pandas 空数据处理方法详解
Nov 02 Python
pytorch中的自定义反向传播,求导实例
Jan 06 Python
完美解决jupyter由于无法import新包的问题
May 26 Python
利用Python实现Json序列化库的方法步骤
Sep 09 Python
使用tkinter实现三子棋游戏
Feb 25 Python
pytorch中的model.eval()和BN层的使用
May 22 Python
python实现简单的聊天小程序
Jul 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
PHP4和PHP5性能测试和对比 测试代码与环境
2007/08/17 PHP
PHP 批量删除数据的方法分析
2009/10/30 PHP
php 字符串函数收集
2010/03/29 PHP
Windows下安装Memcached的步骤说明
2010/04/25 PHP
[原创]php简单隔行变色功能实现代码
2016/07/09 PHP
限制文本字节数js代码
2007/03/06 Javascript
javascript中的Function.prototye.bind
2015/06/25 Javascript
JS实现灵巧的下拉导航效果代码
2015/08/25 Javascript
Node.js巧妙实现Web应用代码热更新
2015/10/22 Javascript
JavaScript继承模式粗探
2016/01/12 Javascript
js 声明数组和向数组中添加对象变量的简单实例
2016/07/28 Javascript
EasyUi 打开对话框后控件赋值及赋值后不显示的问题解决办法
2017/01/19 Javascript
angular select 默认值设置方法
2017/06/23 Javascript
JS判断数组那点事
2017/10/10 Javascript
vue中post请求以a=a&amp;b=b 的格式写遇到的问题
2018/04/27 Javascript
vue 翻页组件vue-flip-page效果
2020/02/05 Javascript
如何在Vue项目中添加接口监听遮罩
2021/01/25 Vue.js
使用python的chardet库获得文件编码并修改编码
2014/01/22 Python
wxpython 最小化到托盘与欢迎图片的实现方法
2014/06/09 Python
利用Python学习RabbitMQ消息队列
2015/11/30 Python
Python实现通过文件路径获取文件hash值的方法
2017/04/29 Python
用不到50行的Python代码构建最小的区块链
2017/11/16 Python
django将图片上传数据库后在前端显式的方法
2018/05/25 Python
pyqt5实现俄罗斯方块游戏
2019/01/11 Python
情人节快乐! python绘制漂亮玫瑰
2020/08/18 Python
pytorch实现mnist数据集的图像可视化及保存
2020/01/14 Python
如何在 Django 模板中输出 &quot;{{&quot;
2020/01/24 Python
python2和python3哪个使用率高
2020/06/23 Python
CSS3 Media Queries(响应式布局可以让你定制不同的分辨率和设备)
2013/06/06 HTML / CSS
Booking.com缤客中国:全球酒店在线预订网站
2020/05/03 全球购物
社会实践的活动方案
2014/08/22 职场文书
恋恋笔记本观后感
2015/06/16 职场文书
司法廉洁教育心得体会
2016/01/20 职场文书
Python基础知识学习之类的继承
2021/05/31 Python
关于mysql中时间日期类型和字符串类型的选择
2021/11/27 MySQL
win10如何更改appdata文件夹的默认位置?
2022/07/15 数码科技