Python实现历史记录功能
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实现历史记录功能相关推荐
- 5、如何快速找到多个字典中的公共键(key) 6 如何让字典保持有序 7 如何实现用户的历史记录功能(最多n条)...
5.如何快速找到多个字典中的公共键(key) from random import randint,sample #随机取数 # a = sample("ABCDEF",randi ...
- 7. 实现用户的历史记录功能
例如,很多应用程序都有浏览用户的历史记录的功能: 浏览器可以查看最近访问过的网页. 视频播放器可以查看最近播放过的视频文件. Shell可以查看用户输入过的命令. 要求:现在制作一个简单的猜数字游戏, ...
- python解释器的功能_python的解释器是什么?
python解释器是解释python脚本执行的程序.编写python代码保存后,我们会得到一个以.py为扩展名的文本文件.要运行此文件,就需要python解释器去执行.py文件. python解释器种 ...
- python网络爬虫的基本步骤-详解Python网络爬虫功能的基本写法
网络爬虫,即Web Spider,是一个很形象的名字.把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛. 1. 网络爬虫的定义 网络蜘蛛是通过网页的链接地址来寻找网页的.从网站某一个 ...
- win10计算机记录,启用Windows 10计算器中的历史记录功能 | MOS86
点击此处修复Windows错误并提高系统性能 Windows 10中的计算器应用程序看起来很简单,但功能尚不强大,因为它包含一些标准的,科学的和编程的模式以及单位转换器.它成为准备账单,转换食谱或其他 ...
- pycharm支持python3.8_PyCharm 2019.2 发布,Python 3.8功能的支持
PyCharm 2019.2已经发布了,令人兴奋的新功能,开始支持Python 3.8,改进的Jupyter Notebook体验以及更多其他更改. PyCharm 2019.2发布亮点: 改进了Ju ...
- python开发环境功能介绍_第一模块 第3章 Python介绍与环境配置
python入门(全为重点) 1. 编程语言介绍 编程语言分类.总结 2. python介绍 3. 解释器多版本共存 4. 运行python程序的两种方式 5. 一个python程序运行的三个步骤(* ...
- python实现登录功能_python实现用户登录功能模块
python实现登录功能模块#!/usr/bin/env python while True: user = raw_input('Please input username:') if user = ...
- 搜集访问网页历史记录软件_微软宣布OneDrive版本历史记录功能抵达Win10和macOS客户端版...
微软旗下的云存储服务 OneDrive 此前已经提供历史版本功能,即不同编辑版本保留以便用户有需要的时候恢复.不过此前该功能仅支持网页版使用因此操作上多有不变,尤其是常用文档可能每次都得访问网页版查看 ...
- [转载] python字典查询功能_Python中的字典功能
参考链接: Python中的字典dictionary方法 (cmp(), len(), items()-) python字典查询功能 Let's check out some important fu ...
最新文章
- JMS(二):简单的JMS入门实例
- 设计模式之装饰模式学习笔记
- python——no module named XX
- java io读书笔记(8)FileInputStream/FileOutputStream的应用
- [高中作文赏析]渴望从前
- php foreach、while性能比较
- android 资源文件
- Python版本的查看
- 视频怎么剪辑才好看?学视频剪辑必读入门指南
- oracle alter user identified,11g 使用 alter user identified by values password 恢复历史密码
- 卸载过 IE浏览器,再安装提示“安装程序无法继续,因为你的计算机上安装了新的 Internet Explorer” ,cv 别人的IE浏览器安装文件夹打开 iexplore.exe 窗口闪一下又关掉了
- STM32制作FLASH字库
- 频率变标算法(FSA,Frequency Scaling)
- LeCo-88.合并两个有序数组
- 用了MybatisPlus后,我很久没有手写sql了
- 深入理解Linux 条件变量2:使用条件变量实现[生产-消费]框架
- Apache Doris三种数据模型(Aggregate、Uniq、Duplicate)的使用及其注意点
- 【Linux-Linux常用命令】Linux常用命令总结
- 物联网项目——具体分工
- QQ收集表图片批量导出