边写边学Python(15)年会抽奖程序

万勇
2023-12-01

题目

某公司假设有300名员工,开年会抽奖,奖项如下:
一等奖3名:泰国5日游
二等奖6名:Iphone手机
三等奖30名:小型空气净化剂一盒
抽奖规则:
1.共抽三次,第一次抽三等奖,第二次抽二等奖,第三次压轴抽一等奖。
2.每个员工限中奖一次,不得重复。

程序分析

1.生成一个员工列表,用random模块从里面随机取值。
2.取完值之后,立刻从员工大列表里把中奖人删掉,防止其再次中奖。

代码

三个奖项分三个部分进行抽奖:

import random

#随机创建抽奖员工列表
list=random.sample([i for i in range(1,301)],300)

choice = input('开始抽三等奖:')
winners3 = random.sample(list,30)
print('获奖者的号码为',end = '')
print(winners3)
for yg in winners3:
    list.remove(yg)  #从员工列表删除已中奖者

choice = input('开始抽二等奖:')
winners2 = random.sample(list,6)
print('获奖者的号码为',end = '')
print(winners2)
for yg in winners2:
    list.remove(yg)  #从员工列表删除已中奖者

choice = input('开始抽一等奖:')
winners1 = random.sample(list,3)
print('获奖者的号码为',end = '')
print(winners1)
for yg in winners1:
    list.remove(yg)  #从员工列表删除已中奖者

输出结果:

开始抽三等奖:
获奖者的号码为[50, 14, 74, 31, 90, 277, 281, 127, 76, 261, 129, 293, 80, 243, 247, 155, 254, 187, 28, 191, 284, 211, 73, 210, 238, 18, 61, 162, 258, 181]
开始抽二等奖:
获奖者的号码为[287, 280, 186, 89, 224, 177]
开始抽一等奖:
获奖者的号码为[194, 35, 138]

其实抽奖的环节是一样的,只是每个奖项获得人数不同,可以对代码进行遍历

import random
staff_list = []
for i in range(0,300):
    staff_list.append(f'员工{i}')

lottery_levels = [30,6,3]
count = 0
while count < 3:
    choice = input(f'开始抽{3-count}奖:')
    winners = random.sample(staff_list,lottery_levels[count])
    print(winners)
    for p in winners:
        staff_list.remove(p) #删除已中奖者
    count += 1

输出结果:

开始抽3奖:
['员工222', '员工289', '员工156', '员工258', '员工280', '员工165', '员工1', '员工148', '员工26', '员工39', '员工143', '员工248', '员工22', '员工200', '员工66', '员工290', '员工119', '员工101', '员工259', '员工221', '员工167', '员工207', '员工27', '员工74', '员工199', '员工69', '员工293', '员工189', '员工287', '员工142']
开始抽2奖:
['员工208', '员工213', '员工250', '员工68', '员工99', '员工92']
开始抽1奖:
['员工30', '员工104', '员工216']

 类似资料: