1. 程式人生 > >勵誌成為優產的母豬--------猜數遊戲 ,歷史記錄,pickle保存,隊列deque

勵誌成為優產的母豬--------猜數遊戲 ,歷史記錄,pickle保存,隊列deque

n) 智商 隊列 記錄 很快 字母 過多 [] bob

# pickle 可以處理復雜的序列化語法。(例如自定義的類的方法,遊戲的存檔等),存檔以文件的形式保存   參見 https://www.cnblogs.com/abobo/p/8080447.html
# collections是Python內建的一個集合模塊,提供了許多有用的集合類。參見 https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001411031239400f7181f65f33a4623bc42276a605debf6000
# coding: utf-8
import random
import pickle
from collections import deque

n = random.randint(0, 100) # 隨機找出0-100之中的數
history_list = deque([], maxlen=5) # 限制最大長度
try_num = 0
print(n)


def pk(m):
if m != n:
if m > n:
print("大了")
else:
print("小了")
return False
return True


def h_print():# pickle取
ret = pickle.load(open(‘history‘, ‘rb‘))
return ret


def history(history_list): # pickle存
history_list = list(history_list)
pickle.dump(history_list, open(‘history‘, ‘wb‘))


while True:
try_num += 1
if try_num > 10:
print("嘗試次數過多,您已經笨死了!!!")
break
m = input("輸入您的答案:")
try: # 異常處理 防止用戶輸入字母
# m = input("輸入您的答案:")
if len(m) == 0:
print("not null")
m = int(m)
history_list.append(m)
history(history_list)
if pk(m) == True:
print("以您的智商,居然TM答對了")
break
except ValueError:
if m == "h":
print("您猜數的歷史記錄:")
print(h_print())
else:
print("格式有誤,請輸入整數字")

# 註解:使用list存儲數據時,按索引訪問元素很快,但是插入和刪除元素就很慢了,因為list是線性存儲,數據量大的時候,插入和刪除效率很低。
#
# deque是為了高效實現插入和刪除操作的雙向列表,適合用於隊列和棧

勵誌成為優產的母豬--------猜數遊戲 ,歷史記錄,pickle保存,隊列deque