python每日一练 [1]

个人好久没用python,现在为了保持熟练度,争取每天做一两个小程序锻炼、锻炼。

年会抽奖

路飞科技有限公司有300员工,开年会抽奖,奖项如下: 一等奖3名:泰国5日游+手术费报销 二等奖6名:iPhone14手机 三等奖30名:三斤苹果 <br>

规则:

1.共抽3次,第一次抽3等奖,第2次抽2等奖,第3次压轴抽1等奖 2.每个员工限中奖一次,不能重复 <br>

解题思路:

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

实现代码如下:

import random  
  
# 员工总数  
total_employees = 300  
#员工列表,这里用编号代替实际姓名  
employees = list(range(1, total_employees + 1))  
  
# 设置奖项  
prizes = {  
    '一等奖': {'quantity': 3, 'prize': '泰国5日游+手术费报销'},  
    '二等奖': {'quantity': 6, 'prize': 'iPhone14手机'},  
    '三等奖': {'quantity': 30, 'prize': '三斤苹果'}  
}  
  
# 抽奖流程  
print("年会抽奖开始:")  
  
# 剩余员工列表  
remaining_employees = employees.copy()  
  
# 抽一等奖
firstPrize_winners = random.sample(remaining_employees, prizes['一等奖']['quantity'])  
print(f"一等奖获奖者: {firstPrize_winners}, 奖品: {prizes['一等奖']['prize']}")  

# 抽二等奖  
secondPrize_winners = random.sample(remaining_employees, prizes['二等奖']['quantity'])  
remaining_employees = [emp for emp in remaining_employees if emp not in secondPrize_winners]  
print(f"二等奖获奖者: {secondPrize_winners}, 奖品: {prizes['二等奖']['prize']}")  

# 抽三等奖
thirdPrize_winners = random.sample(remaining_employees, prizes['三等奖']['quantity'])  
remaining_employees = [emp for emp in remaining_employees if emp not in thirdPrize_winners]  
print(f"三等奖获奖者: {thirdPrize_winners}, 奖品: {prizes['三等奖']['prize']}")  
  
# 检查是否还有剩余员工未中奖  
if remaining_employees:  
    print(f"还有{len(remaining_employees)}名员工未中奖。")  
else:  
    print("所有员工都已参与抽奖。")

<br><br><br>

运行结果

仅供参考,随机抽取的结果不会一致。 <br>

控制台输出:

年会抽奖开始:
一等奖获奖者: [6, 248, 102], 奖品: 泰国5日游+手术费报销
二等奖获奖者: [157, 197, 222, 40, 99, 234], 奖品: iPhone14手机
三等奖获奖者: [95, 24, 280, 170, 219, 121, 244, 242, 159, 107, 120, 158, 52, 90, 239, 36, 44, 289, 257, 13, 152, 188, 279, 21, 64, 195, 275, 211, 277, 85], 奖品: 三斤苹果
还有264名员工未中奖。

<br><br><br>

总结

无、不知道说些什么。