程序员

随机抽奖拿饭卡

2018-06-17  本文已影响11人  迈阿密小白

说明

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

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

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

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

解决

大致思路如下:

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]即可

上一篇下一篇

猜你喜欢

热点阅读