用Python怎样写浏览器的历史记录功能
Admin 2022-09-14 群英技术资讯 773 次浏览
实际案例:
很多应用程序都有浏览用户的历史记录的功能,
例如:
浏览器可以查看最近访问过的网页;
视频播放器可以查看最近播放过视频文件;
Shell可以查看用户输入过的命名;
... ...
现在我们制作了一个简单的猜数字的小游戏,添加历史记录功能,显示用户最近猜过的数字,如何实现?
注:历史记录不能是无限条需要加限定。只显示最近5次的历史记录,其它的抛弃掉。
解决方案:
使用容量为n的队列存储历史记录
使用标准库collections中的deque,它是一个双端循环队列。
程序退出前,可以使用pickle将队列对象存入文件,再次运行程序时将其导入。
(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'))
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要给大家介绍了关于python列表中remove()函数的使用,以及Python列表的remove方法的注意事项,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
这篇文章主要介绍了Python-OpenCV的基本使用和相关函数介绍,主要包括图像的读取保存图像展示问题,结合实例代码给大家介绍的非常详细,需要的朋友可以参考下
大家好,本篇文章主要讲的是Python写代码的七条重要技巧介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
本章节将一些Python3基础语法整理成手册,方便各位在日常使用和学习是查阅,包含了编码、标识符、保留字、注释、缩进、字符串等常用内容。
这篇文章主要为大家介绍了python之异步编程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助<BR>
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008