问题描述:【年会抽奖】,要求每次中奖的两个人不是同一单位,两两输出直到所有人都抽出为止。
数据来源:一个含有两列信息的execl表格,第一列为工作单位,第二列为员工姓名。
应用的库:xlrd random
要点:了解xlrd库的函数用法,如何判断每次抽取两人单位是否一致
表格xls数据如下:
?
?
代码段如下
import xlrd,random
xlsx=xlrd.open_workbook(r'D:\新桌面\python\python课件\示例.xls')
#打开所用的execl工作簿xls
table=xlsx.sheet_by_index(0)
#打开所用信息所在的工作表sheet
nrows=table.nrows
#提取工作表所用行数即员工总数
w=[i for i in range(nrows)]
#创建从0到(总数-1)的抽奖列表
for i in range(1,1+nrows//2):
#只需需要循环总数一半向下取整即可
x=random.choice(w)
#随机选取一个员工x
w.remove(x)
#从抽奖列表中删除员工x
for j in range(len(w)):
#从剩余列表中遍历寻找下一个中奖人员
y=random.choice(w)
#随机再选取一名员工y
if table.cell_value(y,0)!=table.cell_value(x,0):
#判断两名员工是否是同一单位,这里运用xlrd库里的cell_value(x,y),提取第x行第y列单元格cell的信息
print('第{}次中奖人员:'.format(i),table.cell_value(x,1),table.cell_value(y, 1))
w.remove(y)
#从抽奖列表中删除员工y
break
#满足抽取两人后,结束内层循环,继续大循环
运行结果如下:
?
总结:首先要将xlrd库配置好,了解xlrd相关函数,后续提升可设计抽奖界面,增加用户可操作性
|