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最基本的数据类型以及对元组的介绍
Apr 14 Python
深入理解Python中字典的键的使用
Aug 19 Python
基于python 字符编码的理解
Sep 02 Python
Python多线程扫描端口代码示例
Feb 09 Python
查找python项目依赖并生成requirements.txt的方法
Jul 10 Python
pytorch 转换矩阵的维数位置方法
Dec 08 Python
python将pandas datarame保存为txt文件的实例
Feb 12 Python
CentOS7安装Python3的教程详解
Apr 10 Python
Python 中包/模块的 `import` 操作代码
Apr 22 Python
用Python实现最速下降法求极值的方法
Jul 10 Python
使用python求斐波那契数列中第n个数的值示例代码
Jul 26 Python
Python Matplotlib绘制两个Y轴图像
Apr 13 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
德生PL990的分析评价
2021/03/02 无线电
用PHP开发GUI
2006/10/09 PHP
PHP远程连接MYSQL数据库非常慢的解决方法
2008/07/05 PHP
PHP中常用的魔术方法
2017/04/28 PHP
PHP中trait使用方法详细介绍
2017/05/21 PHP
javascript 窗口加载蒙板 内嵌网页内容
2010/11/19 Javascript
jQuery Ajax请求状态管理器打包
2012/05/03 Javascript
JS与C#编码解码
2013/12/03 Javascript
JavaScript数值转换的三种方式总结
2014/07/31 Javascript
JavaScript中的数组特性介绍
2014/12/30 Javascript
jquery 插件实现瀑布流图片展示实例
2015/04/03 Javascript
jquery form表单获取内容以及绑定数据
2016/02/24 Javascript
Bootstrap4一次重大更新 几乎涉及每行代码
2016/05/16 Javascript
微信小程序 vidao实现视频播放和弹幕的功能
2016/11/02 Javascript
Angularjs实现分页和分页算法的示例代码
2016/12/23 Javascript
JS实现复制内容到剪贴板功能
2017/02/05 Javascript
理解 javascript 中的函数表达式与函数声明
2017/07/07 Javascript
vue.js中npm安装教程图解
2018/04/10 Javascript
Node.js应用设置安全的沙箱环境
2018/04/23 Javascript
使用pkg打包Node.js应用的方法步骤
2018/10/19 Javascript
vue实现局部刷新的实现示例
2019/04/16 Javascript
在Python中使用列表生成式的教程
2015/04/27 Python
Python如何获取系统iops示例代码
2016/09/06 Python
详谈Python基础之内置函数和递归
2017/06/21 Python
python pygame实现2048游戏
2018/11/20 Python
python如何将多个PDF进行合并
2019/08/13 Python
Python中实现输入超时及如何通过变量获取变量名
2020/01/18 Python
python实现串口通信的示例代码
2020/02/10 Python
Django如何使用jwt获取用户信息
2020/04/21 Python
关于css兼容性问题及一些常见问题汇总
2016/05/03 HTML / CSS
客服端调用EJB对象的几个基本步骤
2012/01/15 面试题
职工小家建设活动方案
2014/08/25 职场文书
机关党员公开承诺书
2014/08/30 职场文书
贷款工作证明模板
2015/06/12 职场文书
2020年基层司法所建设情况调研报告
2019/11/30 职场文书
CentOS7安装MySQL8的超级详细教程(无坑!)
2022/06/10 Servers