文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2024-04-02 19:55

关注

案例名称:盲盒抽奖

案例描述:
某比赛共设三个奖项,分别是:一等奖、二等奖、三等奖,
一等奖的奖品有三种选择:电饭煲、空调、洗衣机,
二等奖的奖品有三种选择:球鞋、手表、滑板,
三等奖的奖品有三种选择:对联、手袋、钙片

现需要编写一个函数,函数中设置一个参数,该参数用来接收对应奖项的字符串。
即:如果参数值等于‘一等奖',则返回对应奖项下可选择奖品的任意一个,从而实现盲盒抽取效果。
如果参数值的字符串不是一等奖、二等奖或者三等奖,则直接返回输入有误,没有该奖项字样。比如:参数值等于‘四等奖',则直接返回输入有误,没有该奖项。
当抽出奖项后,相应库存减一,如果奖项库存为零时,返回没有奖品了

代码实现如下:


#猜盲盒
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 盲盒抽奖内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯