網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
1、如何實(shí)現(xiàn)用戶的歷史記錄功能(最多n條)
實(shí)際案例:
很多應(yīng)用程序都有瀏覽用戶的歷史記錄的功能,
例如:
瀏覽器可以查看最近訪問(wèn)過(guò)的網(wǎng)頁(yè);
視頻播放器可以查看最近播放過(guò)視頻文件;
Shell可以查看用戶輸入過(guò)的命名;
... ...
現(xiàn)在我們制作了一個(gè)簡(jiǎn)單的猜數(shù)字的小游戲,添加歷史記錄功能,顯示用戶最近猜過(guò)的數(shù)字,如何實(shí)現(xiàn)?
注:歷史記錄不能是無(wú)限條需要加限定。只顯示最近5次的歷史記錄,其它的拋棄掉。
解決方案:
使用容量為n的隊(duì)列存儲(chǔ)歷史記錄
使用標(biāo)準(zhǔn)庫(kù)collections中的deque,它是一個(gè)雙端循環(huán)隊(duì)列。
程序退出前,可以使用pickle將隊(duì)列對(duì)象存入文件,再次運(yùn)行程序時(shí)將其導(dǎo)入。
2、代碼演示
(1)deque雙端隊(duì)列簡(jiǎn)單使用
from collections import deque
# 創(chuàng)建帶有容量的隊(duì)列
q = deque([], 5)
# 一次添加多個(gè)元素
a = [1, 2, 3, 4, 5]
q.extend(a)
print(q)
# 添加第6個(gè)元素,查看隊(duì)列時(shí)發(fā)現(xiàn)第1個(gè)元素已經(jīng)被擠出去了
q.append(6)
print(q)
(2)pickle保存對(duì)象到文件中或讀取文件中對(duì)象
q = deque([1, 2, 3, 4, 5], maxlen=5)
# 存儲(chǔ)對(duì)象到文件
pickle.dump(q, open('history', 'wb'))
# 讀取文件中對(duì)象
q2 = pickle.load(open('history', 'rb'))
print(q2)
(3)實(shí)現(xiàn)猜數(shù)字游戲的歷史記錄
from random import randint
from collections import deque
import pickle
# 猜數(shù)字游戲,首先產(chǎn)生一個(gè)0到100數(shù)字,然后讓用戶猜
N = randint(0, 100)
print('答案:' + str(N))
# 初始化隊(duì)列,容量為5
history = deque([], 5)
# 讀取文件中的歷史記錄
history = pickle.load(open('history', 'rb'))
print(history)
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)
# 記錄用戶輸入數(shù)字
history.append(k)
if guess(k):
break
elif line == 'history' or line == 'h?':
# 用戶可以輸入命令查看歷史記錄
print(list(history))
# 將歷史記錄保存到文件中
pickle.dump(history, open('history', 'wb'))
原文鏈接:https://blog.csdn.net/qq_37189082/article/details/124485077
相關(guān)推薦
- 2023-05-29 postgresql數(shù)據(jù)庫(kù)配置文件postgresql.conf,pg_hba.conf,pg_id
- 2022-06-06 詳解如何自定義Dubbo Filter(含dubbo2.7.X及以上版本和2.6.X及以下版本兩種寫(xiě)
- 2021-12-17 使用遞歸時(shí)返回結(jié)果是undefined的原因和解決辦法
- 2022-07-24 用來(lái)將對(duì)象持久化的python?pickle模塊_python
- 2022-02-09 Qt5連接并操作PostgreSQL數(shù)據(jù)庫(kù)的實(shí)現(xiàn)示例_C 語(yǔ)言
- 2022-07-22 URLClassLoader加載Class時(shí)的類初始化問(wèn)題
- 2022-10-06 C++中的struct和class的區(qū)別詳解_C 語(yǔ)言
- 2022-04-17 Python?同級(jí)目錄(兄弟目錄)調(diào)用方式_python
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門(mén)
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支