網(wǎng)站首頁 編程語言 正文
1、如何實現(xiàn)用戶的歷史記錄功能(最多n條)
實際案例:
很多應(yīng)用程序都有瀏覽用戶的歷史記錄的功能,
例如:
瀏覽器可以查看最近訪問過的網(wǎng)頁;
視頻播放器可以查看最近播放過視頻文件;
Shell可以查看用戶輸入過的命名;
... ...
現(xiàn)在我們制作了一個簡單的猜數(shù)字的小游戲,添加歷史記錄功能,顯示用戶最近猜過的數(shù)字,如何實現(xiàn)?
注:歷史記錄不能是無限條需要加限定。只顯示最近5次的歷史記錄,其它的拋棄掉。
解決方案:
使用容量為n的隊列存儲歷史記錄
使用標(biāo)準(zhǔn)庫collections中的deque,它是一個雙端循環(huán)隊列。
程序退出前,可以使用pickle將隊列對象存入文件,再次運(yùn)行程序時將其導(dǎo)入。
2、代碼演示
(1)deque雙端隊列簡單使用
from collections import deque
# 創(chuàng)建帶有容量的隊列
q = deque([], 5)
# 一次添加多個元素
a = [1, 2, 3, 4, 5]
q.extend(a)
print(q)
# 添加第6個元素,查看隊列時發(fā)現(xiàn)第1個元素已經(jīng)被擠出去了
q.append(6)
print(q)
(2)pickle保存對象到文件中或讀取文件中對象
q = deque([1, 2, 3, 4, 5], maxlen=5)
# 存儲對象到文件
pickle.dump(q, open('history', 'wb'))
# 讀取文件中對象
q2 = pickle.load(open('history', 'rb'))
print(q2)
(3)實現(xiàn)猜數(shù)字游戲的歷史記錄
from random import randint
from collections import deque
import pickle
# 猜數(shù)字游戲,首先產(chǎn)生一個0到100數(shù)字,然后讓用戶猜
N = randint(0, 100)
print('答案:' + str(N))
# 初始化隊列,容量為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)推薦
- 2022-03-24 剖析C語言關(guān)鍵字之void,const,return_C 語言
- 2022-10-06 Python時間戳與日期格式之間相互轉(zhuǎn)化的詳細(xì)教程_python
- 2022-10-07 C語言實現(xiàn)動態(tài)版通訊錄的示例代碼_C 語言
- 2022-05-03 詳解Python利用APScheduler框架實現(xiàn)定時任務(wù)_python
- 2022-05-17 docker?--link容器互聯(lián)的實現(xiàn)_docker
- 2023-03-11 CefSharp過濾圖片RequestHandler問題_C#教程
- 2022-03-31 C#判斷語句的表達(dá)式樹實現(xiàn)_C#教程
- 2022-06-12 淺談Android?Dialog窗口機(jī)制_Android
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- 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)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支