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中的应用之translate和maketrans用法详解
Aug 27 Python
初步理解Python进程的信号通讯
Apr 09 Python
疯狂上涨的Python 开发者应从2.x还是3.x着手?
Nov 16 Python
python随机取list中的元素方法
Apr 08 Python
示例详解Python3 or Python2 两者之间的差异
Aug 23 Python
Windows下安装Scrapy
Oct 17 Python
python实现简单加密解密机制
Mar 19 Python
python 爬取疫情数据的源码
Feb 09 Python
python手写均值滤波
Feb 19 Python
信号生成及DFT的python实现方式
Feb 25 Python
python的sys.path模块路径添加方式
Mar 09 Python
Python实现敏感词过滤的4种方法
Sep 12 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采集腾讯微博的实现代码
2012/01/19 PHP
ThinkPHP CURD方法之order方法详解
2014/06/18 PHP
php使用GD实现颜色渐变实例
2015/06/02 PHP
php简单压缩css样式示例
2016/09/22 PHP
ThinkPHP框架获取最后一次执行SQL语句及变量调试简单操作示例
2018/06/13 PHP
PHP实现创建一个RPC服务操作示例
2020/02/23 PHP
PHP时间类完整代码实例
2021/02/26 PHP
根据分辨率不同,调用不同的css文件
2006/08/25 Javascript
基于jquery的代码显示区域自动拉长效果
2011/12/07 Javascript
jquery实现显示已选用户
2014/07/21 Javascript
JavaScript中实现PHP的打乱数组函数shuffle实例
2014/10/11 Javascript
js+canvas简单绘制圆圈的方法
2016/01/28 Javascript
微信小程序 开发之滑块视图容器(swiper)详解及实例代码
2017/02/22 Javascript
angular.fromJson与toJson方法用法示例
2017/05/17 Javascript
JavaScript自执行函数和jQuery扩展方法详解
2017/10/27 jQuery
Vuejs 2.0 子组件访问/调用父组件的方法(示例代码)
2018/02/08 Javascript
基于vue打包后字体和图片资源失效问题的解决方法
2018/03/06 Javascript
angular 内存溢出的问题解决
2018/07/12 Javascript
Vue源码之关于vm.$delete()/Vue.use()内部原理详解
2019/05/01 Javascript
微信小程序-可移动菜单的实现过程详解
2019/06/24 Javascript
微信小程序实现侧边分类栏
2019/10/21 Javascript
node.js中fs文件系统模块的使用方法实例详解
2020/02/13 Javascript
bootstrap-closable-tab可实现关闭的tab标签页插件
2020/08/09 Javascript
利用JavaScript模拟京东按键输入功能
2020/12/01 Javascript
Python中请使用isinstance()判断变量类型
2014/08/25 Python
全面了解Python环境配置及项目建立
2016/06/30 Python
用Django实现一个可运行的区块链应用
2018/03/08 Python
python3实现表白神器
2019/04/09 Python
python仿evething的文件搜索器实例代码
2019/05/13 Python
Python编写通讯录通过数据库存储实现模糊查询功能
2019/07/18 Python
使用Python的Turtle库绘制森林的实例
2019/12/18 Python
Tensorflow 1.0之后模型文件、权重数值的读取方式
2020/02/12 Python
澳大利亚在线性感内衣商店:Fantasy Lingerie
2021/02/07 全球购物
土木工程应届生求职信
2013/10/31 职场文书
食品流通安全承诺书
2014/05/22 职场文书
总经理任命书范本
2014/06/05 职场文书