ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2022-04-11 16:33:16  阅读:333  来源: 互联网

标签:校运会 选人 name python res excel write num data


任务描述:

在即将到来的运动会中有学院间男生的引体向上和女生的立定跳远项目,现需要从所有的学生名单中从每个学院挑选男女各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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有