如何实现用户的历史记录功能(最多n条)
来源:互联网 发布:7号外设淘宝店网址 编辑:程序博客网 时间:2024/06/05 11:40
实际案例
很多应用程序都有浏览用户的历史记录的功能,如:
- 浏览器可以查看最近访问过的网页;
- 视频播放器可以查看最近播放过的视频文件;
- Shell可以查看用户输入过的命令;
……
现在我们制作了一个简单的猜数字的小游戏,添加历史记录功能,显示用户最近猜过的数字,如何实现?小游戏代码如下:
# -*- coding: utf-8 -*-from random import randintN = randint(0, 100)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 Falsewhile True: line = raw_input("please input a number: ") # 判断用户输入的数据是否为数字 if line.isdigit(): k = int(line) if guess(k): break
用户猜数字,一遍猜中的概论是很低很低的,所以用户猜数字要猜很多很多遍才可能猜中。在猜数字的过程中,由于用户猜的数字次数很多,以至于用户会忘记猜过的数字。因此,我们是有必要添加历史记录功能的。这里为了简化操作,只显示用户最近输入的5个数字。
那如何实现这一功能呢?我们可以使用容量为n的队列存储历史记录:
- 使用标准库collections中的deque,它是一个双端循环队列
- 程序退出前,可以使用pickle将队列对象存入文件,再次运行程序时将其导入
代码如下:
# -*- coding: utf-8 -*-import picklefrom random import randintfrom collections import dequeN = randint(0, 100)history = deque([], 5)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 Falsewhile True: try: # 导入用户猜数字的历史记录 history = pickle.load(open('history')) line = raw_input("please input a number: ") except: line = raw_input("please input a number: ") # 判断用户输入的数据是否为数字 if line.isdigit(): k = int(line) history.append(k) # 将用户历史记录保存至history文件中 pickle.dump(history, open('history', 'w')) if guess(k): break # 用户查看历史记录 elif line == 'history' or line == 'his?': print list(history)
简书个人主页:http://www.jianshu.com/u/766a46e00f6b
阅读全文
0 0
- 如何实现用户的历史记录功能(最多n条)
- python-5-如何实现用户的历史记录功能(最多n条)?
- python 2-7 如何实现用户的历史记录功能(最多n条)collections.deque/pickle持久存储
- Python高级编程-如何实现用户的历史记录功能?
- python高效编程技巧6(如何实现用户的历史记录功能)
- 2-7实现用户的历史记录功能
- 如何实现EditText的历史记录功能(关闭后再次打开显示上次的记录)?
- iOS实现带历史记录功能的计算器
- 流式布局(实现历史记录功能)
- N条直线相交交点、分割的最多平面问题
- js实现搜索历史记录功能
- Android 一般项目的 搜索功能 历史记录排序实现
- 如何实现用户注销功能
- HQL中如何实现select top n这样的功能
- c# 历史记录的实现
- 圆形图片(最多两条边线)以及圆角图片的实现
- 关于用户浏览商品的历史记录(cookie)
- 如何使用ssh框架实现用户的注销功能
- 欢迎使用CSDN-markdown编辑器
- 深入理解javascript原型和闭包(1)——一切都是对象
- 静、动态绑定和JVM机制的分析
- Codeforces 803 B. Distances to Zero 模拟
- servlet 过滤器 监听器
- 如何实现用户的历史记录功能(最多n条)
- eclipse取消validation验证
- jenkins Error performing command: git ls-remote -h
- 向梦想出发
- android 5.0和6.0后新增的控件总结
- 打标签
- 数据库锁
- HDU 2159 Fate(二维完全背包)
- java中的继承