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 相关文章推荐
简单的通用表达式求10乘阶示例
Mar 03 Python
python制作爬虫爬取京东商品评论教程
Dec 16 Python
python检查URL是否正常访问的小技巧
Feb 25 Python
浅谈tensorflow1.0 池化层(pooling)和全连接层(dense)
Apr 27 Python
在scrapy中使用phantomJS实现异步爬取的方法
Dec 17 Python
numpy基础教程之np.linalg
Feb 12 Python
python区分不同数据类型的方法
Oct 14 Python
Java文件与类动手动脑实例详解
Nov 10 Python
将pytorch转成longtensor的简单方法
Feb 18 Python
python:批量统计xml中各类目标的数量案例
Mar 10 Python
Python3 socket即时通讯脚本实现代码实例(threading多线程)
Jun 01 Python
python使用opencv对图像添加噪声(高斯/椒盐/泊松/斑点)
Apr 06 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
ThinkPHP实现一键清除缓存方法
2014/06/26 PHP
JQUERY CHECKBOX全选,取消全选,反选方法三
2008/08/30 Javascript
关于js中alert弹出窗口文本换行问题简单详细说明
2012/12/11 Javascript
jquery实现可关闭的倒计时广告特效代码
2015/09/02 Javascript
jquery仅用6行代码实现滑动门效果
2015/09/07 Javascript
谈谈target=_new和_blank的不同之处
2016/10/25 Javascript
AngularJS框架的ng-app指令与自动加载实现方法分析
2017/01/04 Javascript
input file样式修改以及图片预览删除功能详细概括(推荐)
2017/08/17 Javascript
Vue中正确使用jQuery的方法
2017/10/30 jQuery
vue项目中使用axios上传图片等文件操作
2017/11/02 Javascript
浅谈vue中改elementUI默认样式引发的static与assets的区别
2018/02/03 Javascript
Vue路由钩子之afterEach beforeEach的区别详解
2018/07/15 Javascript
在AngularJs中设置请求头信息(headers)的方法及不同方法的比较
2018/09/04 Javascript
JSON的parse()方法介绍
2019/01/31 Javascript
使用nodejs实现JSON文件自动转Excel的工具(推荐)
2020/06/24 NodeJs
Python映射拆分操作符用法实例
2015/05/19 Python
在Python中操作字典之fromkeys()方法的使用
2015/05/21 Python
分享vim python缩进等一些配置
2018/07/02 Python
html5+css3之制作header实例与更新
2020/12/21 HTML / CSS
Shopee马来西亚:随拍即卖,最佳行动电商拍卖平台
2017/06/05 全球购物
初中女生自我鉴定
2013/12/19 职场文书
师范学院毕业生求职信范文
2013/12/26 职场文书
学生党员的自我评价范文
2014/03/01 职场文书
教师查摆问题自查报告
2014/10/11 职场文书
2014年幼师工作总结
2014/11/22 职场文书
2014年小学数学教师工作总结
2014/12/03 职场文书
确保工程质量承诺书
2015/04/29 职场文书
军训通讯稿范文
2015/07/18 职场文书
我的生日感言
2015/08/03 职场文书
中考百日冲刺决心书
2015/09/22 职场文书
《百分数的认识》教学反思
2016/02/19 职场文书
zabbix监控mysql的实例方法
2021/06/02 MySQL
vue3中provide && inject的使用
2021/07/01 Vue.js
Go语言读取txt文档的操作方法
2022/01/22 Golang
python中的random模块和相关函数详解
2022/04/22 Python
MySQL导致索引失效的几种情况
2022/06/25 MySQL