美文网首页
如何实现用户的历史记录功能(最多n条)?

如何实现用户的历史记录功能(最多n条)?

作者: Diolog | 来源:发表于2019-02-09 11:10 被阅读0次

实际案例:

  • 很多应用程序都有浏览用户的历史记录的功能:
  • 浏览器可以查看最近访问过的网页
  • 视频播放器可以查看最近播放过视频文件
  • 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进行文件处理。

相关文章

网友评论

      本文标题:如何实现用户的历史记录功能(最多n条)?

      本文链接:https://www.haomeiwen.com/subject/juinsqtx.html