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面向对象编程中的类和对象学习教程
Mar 30 Python
使用Python的Django框架实现事务交易管理的教程
Apr 20 Python
Python学习笔记之if语句的使用示例
Oct 23 Python
Python cookbook(数据结构与算法)让字典保持有序的方法
Feb 18 Python
Python实现定时备份mysql数据库并把备份数据库邮件发送
Mar 08 Python
解决Matplotlib图表不能在Pycharm中显示的问题
May 24 Python
python使用wxpy轻松实现微信防撤回的方法
Feb 21 Python
基于django ManyToMany 使用的注意事项详解
Aug 09 Python
Pytorch中accuracy和loss的计算知识点总结
Sep 10 Python
python实现126邮箱发送邮件
May 20 Python
python基于socket模拟实现ssh远程执行命令
Dec 05 Python
Pytest之测试命名规则的使用
Apr 16 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
咖啡豆的最常见发酵处理方法,详细了解一下
2021/03/03 冲泡冲煮
ThinkPHP访问不存在的模块跳转到404页面的方法
2014/06/19 PHP
php常用数学函数汇总
2014/11/21 PHP
PHP简单获取及判断提交来源的方法
2016/04/22 PHP
Yii2框架类自动加载机制实例分析
2018/05/02 PHP
兼容IE/Firefox/Opera/Safari的检测页面装载完毕的脚本Ext.onReady的实现
2009/07/14 Javascript
javascript date格式化示例
2013/09/25 Javascript
js中的for如何实现foreach中的遍历
2014/05/31 Javascript
Vue中fragment.js使用方法详解
2017/03/09 Javascript
Angular指令之restict匹配模式的详解
2017/07/27 Javascript
vue实现长图垂直居上 vue实现短图垂直居中
2017/10/18 Javascript
js实现json数组分组合并操作示例
2019/02/12 Javascript
小程序获取当前位置加搜索附近热门小区及商区的方法
2019/04/08 Javascript
Nuxt默认模板、默认布局和自定义错误页面的实现
2020/05/11 Javascript
vue实现简单跑马灯效果
2020/05/25 Javascript
python多线程编程方式分析示例详解
2013/12/06 Python
python实现字符串和日期相互转换的方法
2015/05/13 Python
python实现合并两个数组的方法
2015/05/16 Python
Ubuntu 下 vim 搭建python 环境 配置
2017/06/12 Python
python实现停车管理系统
2018/11/30 Python
python实现自动获取IP并发送到邮箱
2018/12/26 Python
12个Python程序员面试必备问题与答案(小结)
2019/06/24 Python
如何基于python测量代码运行时间
2019/12/25 Python
10 套华丽的CSS3 按钮小结
2012/10/03 HTML / CSS
canvas 橡皮筋式线条绘图应用方法
2019/02/13 HTML / CSS
奥地利婴儿用品和玩具购物网站:baby-markt.at
2020/01/26 全球购物
内部类的定义、种类以及优点
2013/10/16 面试题
总裁岗位职责
2013/12/04 职场文书
小学教学随笔感言
2014/02/26 职场文书
校长竞聘演讲稿
2014/05/16 职场文书
银行求职自荐信
2014/06/30 职场文书
小学教师党员承诺书
2015/04/27 职场文书
矛盾论读书笔记
2015/06/29 职场文书
光之国的四大叛徒:第一贝利亚导致宇宙毁灭,赛文奥特曼在榜
2022/03/18 日漫
Java8 CompletableFuture 异步回调
2022/04/28 Java/Android
MySQL数据库安装方法与图形化管理工具介绍
2022/05/30 MySQL