|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- '''
- 目的:以猜数字游戏为例,在磁盘中永久记录下最近5次的输入,并随时读取
- '''
- from random import randint
- from collections import deque
- import pickle
- #打开'history.txt'文件,如果不存在则创建
- open('history.txt','a')
- #判断'history.tet'是否为空
- isempty = bool(open('history.txt','rb').read())
- #如果'history.tet'不为空则将文件中的内容读取并反序列化成对象,否则创建一个长度为5的空双向队列q
- q = (pickle.load(open('history.txt','rb')) if isempty else (deque([],5)))
- #产生一个随机0到50的答案
- N = randint(0,50)
- def guess(k):
- if k == N:
- print('You guessed it')
- return True
- if k > N:
- print('%s is greater than N' % k)
- else:
- print('%s is less than N' % k)
- return False
- while True:
- ans = input('Please submit your answer:')
- if ans.isdigit():
- k = int(ans)
- q.append(k)
- if guess(k):
- break
-
- #输入'hy'查看最近5次的历史回答
- elif ans == 'hy':
- print(list(q))
- #输入'exit'退出答题
- elif ans == 'exit':
- break
- #将p对象序列化写入'history.txt'文件中
- pickle.dump(q,open('history.txt','wb'))
- '''
- 提问与思考:
- 1、pickle模块可以序列化对象并保存到磁盘中,并在需要的时候读取出来,任何对象都可以执行序列化操作
- 2、pickle关于参数file,必须是以二进制的形式进行操作(存取)
- 3、deque用于创建一个有限大小的双向列表(先进先出)
- 4、isdigit() 方法检测字符串是否只由数字组成
- 5、一开始打开文件如果是'w'形式会从头开始编辑,即原有内容会被删除;以'r'形式打开不存在不会自动创建
- '''
复制代码 |
|