Python高级编程技巧实战(7)如何实现用户的历史记录功能

如何实现用户的历史记录功能

Python高级编程技巧实战(7)如何实现用户的历史记录功能_第1张图片

原始代码如下:

from random import randint

N = randint(0, 100)

def guess(k):
	if k == N:
		print('猜对了')
		return True
	elif k < N:
		print('猜小了')
	else:
		print('猜大了')
	return False

while True:
	line = input("please input a number:")
	if line.isdigit():
		k = int(line)
		if guess(k):
			break

我们希望保存最近 5 次猜的数字,之前的就被删除

解决方案:

使用容量为 n (本例中 n=5) 的队列存储历史记录

使用标准库中的 deque,它是一个双端循环队列

from random import randint
from collections import deque

history = deque([], 5)

N = randint(0, 100)

def guess(k):
	if k == N:
		print('猜对了')
		return True
	elif k < N:
		print('猜小了')
	else:
		print('猜大了')
	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(history)

若我们还希望 程序下次运行时,可以查看之前的历史记录,就需要将 队列对象 保存到磁盘,可以使用 pickle

pickle 可以将任意类型的数据(包括 数字型、列表、字典、字符串等)保存到磁盘文件,在需要的时候还可以正常读回为原数据

解决方案:程序退出前,可以使用 pickle 将队列对象存入文件,再次运行程序时将其导入

pickle 的用法:

写数据:

import pickle

data = [1, 2, 3, 4]

with open('data.dat', 'wb') as f:

    pickle.dump(data, f)

读数据:

import pickle

with open('data.dat', 'rb') as f:

    data = pickle.load(f)

print(data)

 

你可能感兴趣的:(Python进阶实战)