Python实现盲盒抽奖并自动扣减库存
本文介绍使用Python实现盲盒抽奖功能,通过嵌套字典存储不同等级奖项及其初始库存。核心逻辑包括根据输入奖项等级筛选有效奖品池,随机抽取后自动扣减对应库存。当某奖品库存为零时自动从奖池中移除,若所有奖品发完则返回缺货提示,否则返回未中奖信息。
盲盒抽奖案例概述
案例名称:盲盒抽奖
奖项与奖品设置
案例描述: 本次比赛共设置三个奖项等级,分别为一等奖、二等奖和三等奖。 一等奖的奖品池包含三种可选物品:电饭煲、空调、洗衣机。 二等奖的奖品池包含三种可选物品:球鞋、手表、滑板。 三等奖的奖品池包含三种可选物品:对联、手袋、钙片。
抽奖逻辑与库存扣减规则
现需编写一个函数,该函数接收一个参数,用于指定对应的奖项等级字符串。 当参数值为‘一等奖'时,函数从该奖项下库存大于零的奖品中随机返回一个,实现盲盒抽取效果。 若参数值不属于‘一等奖'、‘二等奖'或‘三等奖'(例如输入‘四等奖'),则直接返回提示“输入有误,没有该奖项”。 每次成功抽取奖品后,相应奖品的库存数量减一。若某奖品的库存已为零,则不再参与抽取;若该奖项下所有奖品库存均耗尽,则返回提示“没有奖品了”。
代码实现如下:
Python代码实现
#猜盲盒
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 盲盒抽奖内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













