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 Trueif k < N:print('%s is less-than N' % k)else:print('%s is greater-than N' % k)return Falsewhile True:line = input("Please input a number: ")if line.isdigit():k = int(line)# 记录用户输入数字history.append(k)if guess(k):breakelif line == 'history' or line == 'h?':# 用户可以输入命令查看历史记录print(list(history))# 将历史记录保存到文件中
pickle.dump(history, open('history', 'wb'))

Python实现历史记录功能相关推荐

  1. 5、如何快速找到多个字典中的公共键(key) 6 如何让字典保持有序 7 如何实现用户的历史记录功能(最多n条)...

    5.如何快速找到多个字典中的公共键(key) from random import randint,sample #随机取数 # a = sample("ABCDEF",randi ...

  2. 7. 实现用户的历史记录功能

    例如,很多应用程序都有浏览用户的历史记录的功能: 浏览器可以查看最近访问过的网页. 视频播放器可以查看最近播放过的视频文件. Shell可以查看用户输入过的命令. 要求:现在制作一个简单的猜数字游戏, ...

  3. python解释器的功能_python的解释器是什么?

    python解释器是解释python脚本执行的程序.编写python代码保存后,我们会得到一个以.py为扩展名的文本文件.要运行此文件,就需要python解释器去执行.py文件. python解释器种 ...

  4. python网络爬虫的基本步骤-详解Python网络爬虫功能的基本写法

    网络爬虫,即Web Spider,是一个很形象的名字.把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛. 1. 网络爬虫的定义 网络蜘蛛是通过网页的链接地址来寻找网页的.从网站某一个 ...

  5. win10计算机记录,启用Windows 10计算器中的历史记录功能 | MOS86

    点击此处修复Windows错误并提高系统性能 Windows 10中的计算器应用程序看起来很简单,但功能尚不强大,因为它包含一些标准的,科学的和编程的模式以及单位转换器.它成为准备账单,转换食谱或其他 ...

  6. pycharm支持python3.8_PyCharm 2019.2 发布,Python 3.8功能的支持

    PyCharm 2019.2已经发布了,令人兴奋的新功能,开始支持Python 3.8,改进的Jupyter Notebook体验以及更多其他更改. PyCharm 2019.2发布亮点: 改进了Ju ...

  7. python开发环境功能介绍_第一模块 第3章 Python介绍与环境配置

    python入门(全为重点) 1. 编程语言介绍 编程语言分类.总结 2. python介绍 3. 解释器多版本共存 4. 运行python程序的两种方式 5. 一个python程序运行的三个步骤(* ...

  8. python实现登录功能_python实现用户登录功能模块

    python实现登录功能模块#!/usr/bin/env python while True: user = raw_input('Please input username:') if user = ...

  9. 搜集访问网页历史记录软件_微软宣布OneDrive版本历史记录功能抵达Win10和macOS客户端版...

    微软旗下的云存储服务 OneDrive 此前已经提供历史版本功能,即不同编辑版本保留以便用户有需要的时候恢复.不过此前该功能仅支持网页版使用因此操作上多有不变,尤其是常用文档可能每次都得访问网页版查看 ...

  10. [转载] python字典查询功能_Python中的字典功能

    参考链接: Python中的字典dictionary方法 (cmp(), len(), items()-) python字典查询功能 Let's check out some important fu ...

最新文章

  1. JMS(二):简单的JMS入门实例
  2. 设计模式之装饰模式学习笔记
  3. python——no module named XX
  4. java io读书笔记(8)FileInputStream/FileOutputStream的应用
  5. [高中作文赏析]渴望从前
  6. php foreach、while性能比较
  7. android 资源文件
  8. Python版本的查看
  9. 视频怎么剪辑才好看?学视频剪辑必读入门指南
  10. oracle alter user identified,11g 使用 alter user identified by values password 恢复历史密码
  11. 卸载过 IE浏览器,再安装提示“安装程序无法继续,因为你的计算机上安装了新的 Internet Explorer” ,cv 别人的IE浏览器安装文件夹打开 iexplore.exe 窗口闪一下又关掉了
  12. STM32制作FLASH字库
  13. 频率变标算法(FSA,Frequency Scaling)
  14. LeCo-88.合并两个有序数组
  15. 用了MybatisPlus后,我很久没有手写sql了
  16. 深入理解Linux 条件变量2:使用条件变量实现[生产-消费]框架
  17. Apache Doris三种数据模型(Aggregate、Uniq、Duplicate)的使用及其注意点
  18. 【Linux-Linux常用命令】Linux常用命令总结
  19. 物联网项目——具体分工
  20. QQ收集表图片批量导出

热门文章

  1. 使用udp 发送一张jpeg图片,upd接收后转成opencv的Mat格式
  2. 网站优化之sitemap.xml网站地图的写法
  3. 电脑电源问题,导致攒机电脑无法开机
  4. HTML5+CSS3教程1
  5. KERNEL_DIR、系统平台、交叉编译器的指定,以及内核模块驱动文件的签名
  6. Cortex-A7 MPCore 架构
  7. 云技术会颠覆IT平台吗?
  8. 企业邮箱服务器如何设置?
  9. 定义一个交通工具(Vehicle)的类
  10. 易经六十四卦对照与简单实现卦象操作