Python 处理表格进行成绩排序

2022-03-12 15:16:02

Python 处理表格进行成绩排序

一、需求分析

我们首先有一个成绩表单,但是学生的成绩是按照学号进行排序的,现在,我们希望清晰明了的知道每一个学生的名次,并且需要将学生按照成绩的高低重新进行排序。

也就是说,我们将学生从按照学号排序转变为按照成绩从高到低进行排序。

二、代码呈现

这个需求其实比较简单,于是,我们直接呈现代码,主要问题是Excel表格的读写操作,这个解决以后就十分简单了。

Excel读:xlrd模块
Excel写:xlwt模块

代码以及解释如下:

import xlwtimport xlrd# 导入模块

wb= xlwt.Workbook()# 创建 excel 表格
xls_0= xlrd.open_workbook("四年级1.xls")# 读取表格文件for iinrange(4,8,1):# 读取不同的表单
    new_sheet= xls_0.sheet_by_index(i)
    sh= wb.add_sheet(f'{new_sheet.name}.xls')# 创建一个 表单# 设置空列表进行数据的存储
    id_list=[]
    name_list=[]
    score_list=[]# 读取表格的数据for oinrange(3):# 3 列for tinrange(20):# 20 行# 获取学号、姓名、成绩等信息
            id_list.append(new_sheet.cell(t+3,3* o).value)
            name_list.append(new_sheet.cell(t+3,3* o+1).value)
            score_list.append(new_sheet.cell(t+3,3* o+2).value)# 获取数据# 进行一定的预处理,去除不存在的人# 意思是说:有些位置是空的,这些位置需要去除掉for numberinrange(len(id_list)):# 由于进行的是删除操作,所以可能会出现下标越界的情况,为了防止这种情况的出现,我们进行异常处理try:if name_list[number]==''or score_list[number]==''or score_list[number]=='请假':# 这个实际上是去除空值
                id_list.pop(number)
                name_list.pop(number)
                score_list.pop(number)except:continue# 去除不存在的人# 进行排序的操作for hinrange(len(id_list)):# len(id_list) 次循环for sinrange(len(id_list)-1):# 这里是进行 len(id_list) - 1 次循环try:if score_list[s]>= score_list[s+1]:passelse:
                    score_list[s], score_list[s+1]= score_list[s+1], score_list[s]
                    name_list[s], name_list[s+1]= name_list[s+1], name_list[s]
                    id_list[s], id_list[s+1]= id_list[s+1], id_list[s]except:continue# 冒泡排序# 将数据写入文件
    position=0for hinrange(len(id_list)):# 写入文件
        sh.write(position,0, id_list[h])
        sh.write(position,1, name_list[h])
        sh.write(position,2, score_list[h])
        position+=1# 写入文件中去# 保存文件

wb.save(f'四年级1-五至八班-分数排序.xls')# 保存

在这里,我们使用了冒泡排序,当然,如果想要运行的更快一些,可以考虑希尔排序,堆排序,快速排序等排序方式,但是要注意,学号、姓名、分数一定要同时进行排序,就是说这三个量应该捆绑在一起移动,而移动的原则就是分数高低。

三、成果展示

图片1、
在这里插入图片描述
图片2、在这里插入图片描述
图片3、在这里插入图片描述
图片4、
在这里插入图片描述

  • 作者:hhh江月
  • 原文链接:https://blog.csdn.net/m0_54218263/article/details/119053466
    更新时间:2022-03-12 15:16:02