编程语言
首页 > 编程语言> > python实现校运会抽签(简单选人)

python实现校运会抽签(简单选人)

作者:互联网

任务描述:

在即将到来的运动会中有学院间男生的引体向上和女生的立定跳远项目,现需要从所有的学生名单中从每个学院挑选男女各45个参加项目。(每次运行得到一个学院的结果)

实施方法:

利用pandas库读取excel,Dataframe的用法进行筛选得到所要抽签学院的总的男生,总的女生。利用生成随机数函数生成要选择的行(第几行被选中)。再把结果输出到结果excel中。

具体代码

因为男生女生一样所以下面以选45个男生为例

import os
import pandas as pd
import random
from openpyxl import load_workbook
#读入源文件,方便移植
path = os.getcwd()
name = '/orignal.xlsx'
data = pd.read_excel(path + name)
#根据输入得到要抽签学院的信息
col = input("请输入要抽签的学院:")
data = data[data["college"] == col]
data1 = data[data["sex"] == '男']
num = data.shape[0]#该学院的人数
res_num =2#抽签的人数 
#得到随机行数
random.seed(20220409)#随机种子,值相同得到的随机数相同
res_list = random.sample(range(0, num), res_num) #得到随机数列表,data下标从0开始 
res_list.sort()#排序,使最后得到的相对有序,各个年级在一起
#利用Dataframe对象存储被选中的人,
res = pd.DataFrame(columns=('num', 'name', 'sex', 'college'))
for i in res_list:
    print(i)
    res = res.append(data.iloc[i])#追加函数将要废弃

res.index = range(len(res))#重新建立索引
res.index=res.index+1#索引从1开始
#利用book对象实现写入到同一个表的不同sheet中
book = load_workbook('res.xlsx')
write = pd.ExcelWriter(r'res.xlsx', engine='openpyxl')
write.book = book
res.to_excel(write, sheet_name=col)
write.save()
write.close()

现存bugs

当结果excel不存在时,不会创建文件。

感想

python以简单著名,但对其中的知识仍然需要系统的进行整理。同时python也是最容易与生活相联系的一门编程语言。

标签:校运会,选人,name,python,res,excel,write,num,data
来源: https://www.cnblogs.com/sakuzeng/p/16130525.html