美文网首页程序员
随机抽奖拿饭卡

随机抽奖拿饭卡

作者: 迈阿密小白 | 来源:发表于2018-06-17 20:07 被阅读11次

    说明

    饭后闲来无事,就随便写写,就当看小说好了。
    有这样一个段子:

    深圳有一家奇葩网络公司,公司五点半下班,六点半有公司班车,没人逼你加班,但是为了能体面地坐着一人一座的大巴回家,大家愿意主动加班一小时;六点半准备坐班车回家时,就会想起另外一条制度:8点钟有东来顺的工作餐:样多,管饱,有水果。想想坐班车回家还得自己做饭,那就再主动加班一小时,吃了工作餐再回家呗。8点钟吃完工作餐准备回家,又想起一条公司制度:10点钟以后打车报销。一天干了十几个小时,谁还有力气挤公交?那就再主动加班2小时呗。这个公司特任性,从不逼员工加班。

    其实呢,我司也差不多,干到8点半会有饭卡,直接去楼下食堂消费,所以每天4点半到5点之间,就需要一个同学去拿饭卡。

    谁去拿呢?这是个问题...
    新人去拿麽,呦,欺负新人啊
    领导去拿麽,嘿,还真不把领导当回事啊
    老人去拿麽,嘛,为啥不是新人去拿,还能勾搭行政小姐姐
    .
    .
    好吧,那就让上天决定去拿吧,我们就摇骰子

    解决

    大致思路如下:

    • 1.组内同学名单,生成一个列表
    • 2.生成一个由随机数组成的列表
    • 3.相同index值,随机数最小的那个同学去拿饭卡
      代码如下:
    from random import randint
    
    print('-----开始摇奖-----')
    print('\t.\n\t.\n\t.\n结果出来啦,如下:')
    staff = ['龚x','张x','董xx','任x','田xx','张xx','施xx','汪x','衡'x,'郑x','李xx']
    lenstaff = len(staff)
    def rand():
        '''
        随机数生成,set去重
        :return: 随机数
        '''
        try:
            num = [randint(0, 100) for i in range(lenstaff)]
            print(num)
            if len(set(num)) == len(num):
                return num
            else:
                return None
        except:
            print('请再试一次')
    
    def select():
        '''
        选出数字最小的同学
        :return:
        '''
        num = rand()
        if num is not None:
            dinner = dict(zip(staff, num))
            dinner = sorted(dinner.items(), key=lambda x: x[1])
            print(dinner)
            print('{}最小,今天拿饭卡'.format(staff[num.index(min(num))]))
        else:
            print('有重复随机数,请再试一次')
    

    哈哈,这样一来,问题解决啦,恭喜xxx全款喜提饭卡n张

    中间好像也没涉及什么特别难的地方吧,可能会有一个面试可能遇到的问题,里面提供了解决方案。

    Q:将dict按key或value排序

    解决方案:

    dinner = sorted(dinner.items(), key=lambda x: x[1])
    

    上面是按value值排序,如果用key排序,则将 x[1] 改为x[0]即可

    相关文章

      网友评论

        本文标题:随机抽奖拿饭卡

        本文链接:https://www.haomeiwen.com/subject/yuaweftx.html