例如,很多应用程序都有浏览用户的历史记录的功能:
- 浏览器可以查看最近访问过的网页。
- 视频播放器可以查看最近播放过的视频文件。
- Shell可以查看用户输入过的命令。
要求:现在制作一个简单的猜数字游戏,添加历史记录功能,显示用户最近猜过的数字。
解决方案:
使用容量为n的队列存储历史记录。使用标准库中collections中的deque,它是一个双端循环队列;再使用pickle模块将历史记录存储到硬盘,以便下次启动使用。
- 对于
deque()
函数:
deque([iterable[, maxlen]])
deque()
函数提供了两端都可以操作的序列,在序列的前后你都可以执行添加或删除操作。maxlen
为队列容量。
- 对于
isdigit()
方法:
isdigit()
方法用来检测字符串是否只由数字组成。如果字符串只包含数字则返回True,否则返回False。
- 对于
append()
方法:
append()
方法用于在列表末尾添加新的对象,即右端入列;appendleft()
方法用于在列表开头添加新的对象,即左端入列。
与之类似的还有pop()
方法,pop()
方法用于在列表末尾取出新的对象,即右端出列;popleft()
方法用于在列表开头取出新的对象,即左端出列。
- 对于
pickle
模块:
pickle.dump(obj, file, protocol, fix_imports)
pickle.load(file, fix_imports, encoding, errors)
pickle
模块以二进制形式实现基本的数据序列和反序列化。通过pickle模块的序列化操作pickle.dump()
方法能够将程序中运行的对象信息保存到文件中去,永久存储;通过pickle模块的反序列化操作pickle.load()
方法能够从文件中创建上一次程序保存的对象。
- 方案示例:
from random import randint
from collections import deque
def guess(n, k):