在b站up:IT编程界扛把子 老师那自学 留的作业 题目:某公司假设有300名员工,开年会抽奖,奖项如下: 一等奖3名:泰国5日游 二等奖6名:Iphone手机 三等奖30名:byt一盒 抽奖规则: 1.共抽三次,第一次抽三等奖,第二次抽二等奖,第三次压轴抽一等奖。 2.每个员工限中奖一次,不得重复。 解题思路: 1.生成完整员工列表,使用random.sample随机取值 2.取完值之后,将已获奖员工在完整员工列表中删除
#年会抽奖
import random
worker_list = ['work' +str(i) for i in range(1,301)]
for j in range(1,31):
a = random.sample(worker_list,1)
print(f"{a}得到了三等奖,byt一盒")
z=(a[0])
worker_list.remove(z)
for k in range(1,7):
b = random.sample(worker_list,1)
print(f"{b}得到了二等奖,iphone一台")
x=(b[0])
worker_list.remove(x)
for l in range(1,2):
c = random.sample(worker_list,1)
print(f"{c}得到了一等奖,泰国五日游")
本次还尝试了其他方法,但遇到了一些问题:设有两个列表:listA , listB
举例listA=[小明,小王,小张,小李] listB=[小明,小王]
可见listA与listB存在相同元素[小明,小王]
问:如何在listA中去除与listB重复的元素
本人采用了listA.remove(listB)这类的方法 但报错ValueError: list.remove(x): x not in list,推测是remove不能删除列表,所以才在最终方案上采用了提取list中元素的方法such as:z=(a[0]),希望有更好的方法与更优化的程序写法。