python實(shí)現(xiàn)盲盒抽獎(jiǎng)功能(減庫(kù)存)
案例名稱(chēng):盲盒抽獎(jiǎng)
案例描述:
某比賽共設(shè)三個(gè)獎(jiǎng)項(xiàng),分別是:一等獎(jiǎng)、二等獎(jiǎng)、三等獎(jiǎng),
一等獎(jiǎng)的獎(jiǎng)品有三種選擇:電飯煲、空調(diào)、洗衣機(jī),
二等獎(jiǎng)的獎(jiǎng)品有三種選擇:球鞋、手表、滑板,
三等獎(jiǎng)的獎(jiǎng)品有三種選擇:對(duì)聯(lián)、手袋、鈣片
現(xiàn)需要編寫(xiě)一個(gè)函數(shù),函數(shù)中設(shè)置一個(gè)參數(shù),該參數(shù)用來(lái)接收對(duì)應(yīng)獎(jiǎng)項(xiàng)的字符串。
即:如果參數(shù)值等于‘一等獎(jiǎng)',則返回對(duì)應(yīng)獎(jiǎng)項(xiàng)下可選擇獎(jiǎng)品的任意一個(gè),從而實(shí)現(xiàn)盲盒抽取效果。
如果參數(shù)值的字符串不是一等獎(jiǎng)、二等獎(jiǎng)或者三等獎(jiǎng),則直接返回輸入有誤,沒(méi)有該獎(jiǎng)項(xiàng)字樣。比如:參數(shù)值等于‘四等獎(jiǎng)',則直接返回輸入有誤,沒(méi)有該獎(jiǎng)項(xiàng)。
當(dāng)抽出獎(jiǎng)項(xiàng)后,相應(yīng)庫(kù)存減一,如果獎(jiǎng)項(xiàng)庫(kù)存為零時(shí),返回沒(méi)有獎(jiǎng)品了
代碼實(shí)現(xiàn)如下:
#猜盲盒
import random
#用字典嵌套字典的形式存儲(chǔ)所有獎(jiǎng)品信息
w = {
'一等獎(jiǎng)': {
'電飯煲': 2,
'空調(diào)': 1,
'洗衣機(jī)': 1
},
'二等獎(jiǎng)': {
'球鞋': 2,
'手表': 5,
'滑板': 3
},
'三等獎(jiǎng)': {
'對(duì)聯(lián)': 4,
'手袋': 2,
'鈣片': 3
}
}
def lottery_plus(level=None):
if level == '一等獎(jiǎng)':
w_num = w.get('一等獎(jiǎng)') # 庫(kù)存字典 {'電飯煲':2, '空調(diào)':1, '洗衣機(jī)':1}
jackpot = [] # 獎(jiǎng)池:誰(shuí)的庫(kù)存不為0進(jìn)獎(jiǎng)池 ['電飯煲','空調(diào)','洗衣機(jī)']
# 誰(shuí)的庫(kù)存不為0進(jìn)獎(jiǎng)池
for k in w_num.keys(): # 遍歷['電飯煲','空調(diào)','洗衣機(jī)']
if w_num.get(k) != 0: # 如果庫(kù)存不為0
jackpot.append(k) # 進(jìn)獎(jiǎng)池 [].append('電飯煲')
try:
result = random.choice(jackpot) #隨機(jī)抽取一個(gè)獎(jiǎng)品
# 庫(kù)存-1
w.get('一等獎(jiǎng)')[result] -= 1
print('一等獎(jiǎng)池:', end=' ')
print(jackpot)
return '恭喜獲得一等獎(jiǎng)' + result
except:
return '很遺憾,一等獎(jiǎng)沒(méi)有了' #random.choice([]) 傳入空的列表時(shí)會(huì)報(bào)錯(cuò),列表為空時(shí)說(shuō)明獎(jiǎng)品已經(jīng)都抽走了,所有獎(jiǎng)品庫(kù)存為零
elif level == '二等獎(jiǎng)':
w_num = w.get('二等獎(jiǎng)')
jackpot = []
# 誰(shuí)的庫(kù)存不為0進(jìn)獎(jiǎng)池
for k in w_num.keys():
if w_num.get(k) != 0:
jackpot.append(k)
try:
result = random.choice(jackpot)
# 庫(kù)存-1
w.get('二等獎(jiǎng)')[result] -= 1
print('二等獎(jiǎng)池:', end=' ')
print(jackpot)
return '恭喜獲得二等獎(jiǎng)' + result
except:
return '很遺憾,二等獎(jiǎng)沒(méi)有了'
elif level == '三等獎(jiǎng)':
w_num = w.get('三等獎(jiǎng)')
jackpot = []
# 誰(shuí)的庫(kù)存不為0進(jìn)獎(jiǎng)池
for k in w_num.keys():
if w_num.get(k) != 0:
jackpot.append(k)
try:
result = random.choice(jackpot)
# 庫(kù)存-1
w.get('三等獎(jiǎng)')[result] -= 1
print('三等獎(jiǎng)池:', end=' ')
print(jackpot)
return '恭喜獲得三等獎(jiǎng)' + result
except:
return '很遺憾,三等獎(jiǎng)沒(méi)有了'
else:
return '沒(méi)有獲獎(jiǎng)'
下面是調(diào)用函數(shù)的結(jié)果:


到此這篇關(guān)于python實(shí)現(xiàn)盲盒抽獎(jiǎng)功能(減庫(kù)存)的文章就介紹到這了,更多相關(guān)python 盲盒抽獎(jiǎng)內(nèi)容請(qǐng)搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!
版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。
關(guān)注官方微信