案例
制作了一个简单的猜数字的小游戏,添加历史记录功能,显示用户最近猜过的数字,如何实现?
分析
from random import randint
from collections import deque
import pickle
N = randint(0, 100) # 产生一个0-100的整数
history = deque([], 5) # 产生一个容量为5个数的双端循环队列(双头栈:先进先出,), [1, 2, 3, 4, 5] => [2, 3, 4, 5, 6]
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 False
while True:
line = input("Please input a number: ")
# 如果输入的是数字,但需要注意的是,用户输入进来的其实都是字符串,这里的判断是判断字符串的值是否为数字
if line.isdigit():
k = int(line) # 因为line是字符串,所以还需要再强制转换为int类型的数字
history.append(k)
if guess(k):
break
elif line == 'history'or line == 'h?':
print(list(history))
# 需要注意的是,在Python3中,必须注明文件的写入和读取方式(‘wb’,‘rb’),否则会直接报错
pickle.dump(history, open('history', 'wb')) # 写文件
q2 = pickle.load(open('history', 'rb')) # 读文件
print(q2)