马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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'形式打开不存在不会自动创建
'''
|