人生处万类,知识最为贤。这篇文章主要讲述用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实现盲盒抽奖功能(减库存)】下面是调用函数的结果:
文章图片
文章图片
推荐阅读
- 3分钟,看懂区间估计and置信区间
- Linux系列(去掉目录下文件列表后缀命令)
- Spring Data JDBC - 如何使用自定义 ID 生成
- 自动化会提高测试覆盖率,那测试覆盖率是什么()
- Linux系列(查看已安装的rpm包)
- springcloud alibaba企业落地实战(一文带你掌握nacos基础应用)
- 被问题包围的空降兵,如何破圈突围
- Linux系列(Linux zip压缩 解压 文件夹)
- DruidIndexGeneratorJob源码