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 07 Python
python导入时小括号大作用
Jan 10 Python
python基础教程项目四之新闻聚合
Apr 02 Python
python修改list中所有元素类型的三种方法
Apr 09 Python
python pyheatmap包绘制热力图
Nov 09 Python
Python操作excel的方法总结(xlrd、xlwt、openpyxl)
Sep 02 Python
python的json中方法及jsonpath模块用法分析
Dec 06 Python
Python基础之字典常见操作经典实例详解
Feb 26 Python
python GUI库图形界面开发之PyQt5复选框控件QCheckBox详细使用方法与实例
Feb 28 Python
举例讲解Python装饰器
Dec 24 Python
用Python实现职工信息管理系统
Dec 30 Python
Python实现随机爬山算法
Jan 29 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
天使彦史上最神还原,性别曝光的那一刻,百万网友恋爱了
2020/03/02 国漫
codeigniter自带数据库类使用方法说明
2014/03/25 PHP
ThinkPHP中处理表单中的注意事项
2014/11/22 PHP
PHP+Mysql+jQuery文件下载次数统计实例讲解
2015/10/10 PHP
PHP使用SOAP扩展实现WebService的方法
2016/04/01 PHP
[原创]php实现子字符串位置相互对调互换的方法
2016/06/02 PHP
JQuery,Extjs,YUI,Prototype,Dojo 等JS框架的区别和应用场景简述
2010/04/15 Javascript
jquery获取ASP.NET服务器端控件dropdownlist和radiobuttonlist生成客户端HTML标签后的value和text值
2010/06/28 Javascript
优化innerHTML操作(提高代码执行效率)
2011/08/20 Javascript
jquery分页对象使用示例
2014/04/01 Javascript
BootStrap 轮播插件(carousel)支持左右手势滑动的方法(三种)
2016/07/07 Javascript
jQuery实现侧浮窗与中浮窗切换效果的方法
2016/09/05 Javascript
JavaScript对象创建模式实例汇总
2016/10/03 Javascript
React-Native中props具体使用详解
2017/09/04 Javascript
jQuery实现的淡入淡出图片轮播效果示例
2018/08/29 jQuery
解决Angular2 router.navigate刷新页面的问题
2018/08/31 Javascript
优雅的将ElementUI表格变身成树形表格的方法步骤
2019/04/11 Javascript
JS实现页面数据懒加载
2020/02/13 Javascript
Vue快速实现通用表单验证的方法
2020/02/24 Javascript
vue使用echarts实现水平柱形图实例
2020/09/09 Javascript
[43:41]OG vs Newbee 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.21.mp4
2020/07/19 DOTA
用Python编写web API的教程
2015/04/30 Python
Python 读取指定文件夹下的所有图像方法
2018/04/27 Python
CentOS7安装Python3的教程详解
2019/04/10 Python
弄懂这56个Python使用技巧(轻松掌握Python高效开发)
2019/09/18 Python
pandas实现DataFrame显示最大行列,不省略显示实例
2019/12/26 Python
详解pycharm连接不上mysql数据库的解决办法
2020/01/10 Python
Elasticsearch py客户端库安装及使用方法解析
2020/09/14 Python
css3实现文字首尾衔接跑马灯的示例代码
2020/10/16 HTML / CSS
struct与class的区别
2014/02/03 面试题
函授毕业生自我鉴定范文
2014/03/25 职场文书
农村葬礼主持词
2014/03/31 职场文书
单位接收证明格式
2015/06/18 职场文书
Java基础之详解HashSet的使用方法
2021/06/30 Java/Android
Python中的嵌套循环详情
2022/03/23 Python
Tomcat项目启动失败的原因和解决办法
2022/04/20 Servers