实际案例:
- 很多应用程序都有浏览用户的历史记录的功能:
- 浏览器可以查看最近访问过的网页
- 视频播放器可以查看最近播放过视频文件
- Shell可以查看用户输入过的命令
我们制作了一个简单的猜数字的小游戏,添加历史记录功能,显示用户最近猜过的数字,如何实现?
首先我们先实现猜数字的小游戏:
from random import randint
N = randint(0,100)
def guess(k):
if k == N:
print('right')
if k<N:
print('{0} is less-than N'.format(k))
else:
print('{0} is greater-than N'.format(k))
return False
while True:
line = input('please input a number: ')
if line.isdigit():
k = int(line)
if guess(k):
break
给该程序保存最近的5次猜数的历史纪录。
解决方案:
- 使用容量为n的队列存储历史记录
- 使用标准库collections中的deque,它是一个双端循环队列。
- 程序退出前,可以使用pickle将队列对象存入文件,再次运行时将其导入。
deque的用法
from collections import deque
q = deque([],5)
这里就定义了一个长度为5的队列,如果数量超过5个,新添加的元素将会把第一个元素挤掉
接下来我们开始给猜数游戏添加历史记录
from random import randint
from collections import deque
N = randint(0,100)
history = deque([],5)
def guess(k):
if k == N:
print('right')
if k<N:
print('{0} is less-than N'.format(k))
else:
print('{0} is greater-than N'.format(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))
如果想要将history存储在本地磁盘上以便下次访问,可以使用pickle或者直接使用open进行文件处理。
网友评论