python学习记录-年会抽奖程序

在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]),希望有更好的方法与更优化的程序写法。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值