用python实现盲盒抽奖功能(减库存)

Posted 卿本佳人_奈何

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用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实现盲盒抽奖功能(减库存)的主要内容,如果未能解决你的问题,请参考以下文章

CSDN盲盒抽奖,我直接三个盲盒,结果。。。

CSDN盲盒抽奖,我直接三个盲盒,结果。。。

Java实现抽奖幸运儿

Java实现抽奖幸运儿

盲盒抽奖小程序升级版源码-微擎后台-吸粉抽奖小程序

大河抽奖盲盒运营版 1.9.12开源版