案例名稱:盲盒抽獎
案例描述:
某比賽共設三個獎項,分別是:一等獎、二等獎、三等獎,
一等獎的獎品有三種選擇:電飯煲、空調、洗衣機,
二等獎的獎品有三種選擇:球鞋、手表、滑板,
三等獎的獎品有三種選擇:對聯、手袋、鈣片
現需要編寫一個函數,函數中設置一個參數,該參數用來接收對應獎項的字符串。
即:如果參數值等于‘一等獎",則返回對應獎項下可選擇獎品的任意一個,從而實現盲盒抽取效果。
如果參數值的字符串不是一等獎、二等獎或者三等獎,則直接返回輸入有誤,沒有該獎項字樣。比如:參數值等于‘四等獎",則直接返回輸入有誤,沒有該獎項。
當抽出獎項后,相應庫存減一,如果獎項庫存為零時,返回沒有獎品了
代碼實現如下:
#猜盲盒 import random #用字典嵌套字典的形式存儲所有獎品信息 w = { "一等獎": { "電飯煲": 2, "空調": 1, "洗衣機": 1 }, "二等獎": { "球鞋": 2, "手表": 5, "滑板": 3 }, "三等獎": { "對聯": 4, "手袋": 2, "鈣片": 3 } } def lottery_plus(level=None): if level == "一等獎": w_num = w.get("一等獎") # 庫存字典 {"電飯煲":2, "空調":1, "洗衣機":1} jackpot = [] # 獎池:誰的庫存不為0進獎池 ["電飯煲","空調","洗衣機"] # 誰的庫存不為0進獎池 for k in w_num.keys(): # 遍歷["電飯煲","空調","洗衣機"] if w_num.get(k) != 0: # 如果庫存不為0 jackpot.append(k) # 進獎池 [].append("電飯煲") try: result = random.choice(jackpot) #隨機抽取一個獎品 # 庫存-1 w.get("一等獎")[result] -= 1 print("一等獎池:", end=" ") print(jackpot) return "恭喜獲得一等獎" + result except: return "很遺憾,一等獎沒有了" #random.choice([]) 傳入空的列表時會報錯,列表為空時說明獎品已經都抽走了,所有獎品庫存為零 elif level == "二等獎": w_num = w.get("二等獎") jackpot = [] # 誰的庫存不為0進獎池 for k in w_num.keys(): if w_num.get(k) != 0: jackpot.append(k) try: result = random.choice(jackpot) # 庫存-1 w.get("二等獎")[result] -= 1 print("二等獎池:", end=" ") print(jackpot) return "恭喜獲得二等獎" + result except: return "很遺憾,二等獎沒有了" elif level == "三等獎": w_num = w.get("三等獎") jackpot = [] # 誰的庫存不為0進獎池 for k in w_num.keys(): if w_num.get(k) != 0: jackpot.append(k) try: result = random.choice(jackpot) # 庫存-1 w.get("三等獎")[result] -= 1 print("三等獎池:", end=" ") print(jackpot) return "恭喜獲得三等獎" + result except: return "很遺憾,三等獎沒有了" else: return "沒有獲獎"
下面是調用函數的結果:
到此這篇關于python實現盲盒抽獎功能(減庫存)的文章就介紹到這了,更多相關python 盲盒抽獎內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!
原文鏈接:https://blog.51cto.com/u_5839280/3831231