Python 处理表格进行成绩排序的操作代码


Posted in Python onJuly 26, 2021

一、需求分析

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

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

二、代码呈现

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

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

代码以及解释如下:

import xlwt
import xlrd
# 导入模块

wb = xlwt.Workbook()  
# 创建 excel 表格
xls_0 = xlrd.open_workbook("四年级1.xls")
# 读取表格文件

for i in range(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 o in range(3):  # 3 列
        for t in range(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 number in range(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 h in range(len(id_list)):
        # len(id_list) 次循环
        for s in range(len(id_list) - 1):
            # 这里是进行 len(id_list) - 1 次循环
            try:
                if score_list[s] >= score_list[s + 1]:
                    pass
                else:
                    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 = 0
    
    for h in range(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、

Python 处理表格进行成绩排序的操作代码

图片2、

Python 处理表格进行成绩排序的操作代码
图片3、

Python 处理表格进行成绩排序的操作代码

图片4、

Python 处理表格进行成绩排序的操作代码

到此这篇关于Python 处理表格进行成绩排序的操作代码的文章就介绍到这了,更多相关Python成绩排序内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python在多玩图片上下载妹子图的实现代码
Aug 13 Python
六个窍门助你提高Python运行效率
Jun 09 Python
Python的Flask框架中使用Flask-SQLAlchemy管理数据库的教程
Jun 14 Python
Python IDLE 错误:IDLE''s subprocess didn''t make connection 的解决方案
Feb 13 Python
python 重命名轴索引的方法
Nov 10 Python
Python爬虫——爬取豆瓣电影Top250代码实例
Apr 17 Python
在PYQT5中QscrollArea(滚动条)的使用方法
Jun 14 Python
python调用动态链接库的基本过程详解
Jun 19 Python
python批量解压zip文件的方法
Aug 20 Python
python计算无向图节点度的实例代码
Nov 22 Python
利用OpenCV和Python实现查找图片差异
Dec 19 Python
通过 Python 和 OpenCV 实现目标数量监控
Jan 05 Python
python识别围棋定位棋盘位置
python之基数排序的实现
Jul 26 #Python
python之PySide2安装使用及QT Designer UI设计案例教程
python代码实现备忘录案例讲解
Jul 26 #Python
python之django路由和视图案例教程
Jul 26 #Python
OpenCV图像变换之傅里叶变换的一些应用
Python类方法总结讲解
You might like
PHP+APACHE实现用户论证的方法
2006/10/09 PHP
ThinkPHP调用百度翻译类实现在线翻译
2014/06/26 PHP
破解Session cookie的方法
2006/07/28 Javascript
JQuery Ajax通过Handler访问外部XML数据的代码
2010/06/01 Javascript
js实现正方形颜色从下往上升的效果
2014/08/04 Javascript
使用DNode实现php和nodejs之间通信的简单实例
2015/07/06 NodeJs
JQuery入门基础小实例(1)
2015/09/17 Javascript
基于BootStrap Metronic开发框架经验小结【四】Bootstrap图标的提取和利用
2016/05/12 Javascript
简单谈谈JS数组中的indexOf方法
2016/10/13 Javascript
详谈jQuery unbind 删除绑定事件 / 移除标签方法
2017/03/02 Javascript
微信小程序表单验证功能完整实例
2017/12/01 Javascript
微信小程序实现收藏与取消收藏切换图片功能
2018/08/03 Javascript
Vue实现的父组件向子组件传值功能示例
2019/01/19 Javascript
深入解析koa之异步回调处理
2019/06/17 Javascript
javascript设计模式之迭代器模式
2020/01/30 Javascript
vue在线动态切换主题色方案
2020/03/26 Javascript
python 使用get_argument获取url query参数
2017/04/28 Python
Python多线程原理与用法实例剖析
2019/01/22 Python
Python比较配置文件的方法实例详解
2019/06/06 Python
Python代码太长换行的实现
2019/07/05 Python
详解用Python为直方图绘制拟合曲线的两种方法
2019/08/21 Python
解决pytorch 交叉熵损失输出为负数的问题
2020/07/07 Python
Python‘==‘ 及 ‘is‘相关原理解析
2020/09/05 Python
意大利专业化妆品品牌:KIKO MILANO
2017/02/01 全球购物
Wedgwood美国官网:英国骨瓷,精美礼品及家居装饰
2018/02/17 全球购物
马来西亚领先的在线礼品店:Giftr
2018/08/23 全球购物
微软巴西官方网站:Microsoft Brasil
2019/09/26 全球购物
解释下列WebService名词:WSDL、SOAP、UDDI
2012/06/22 面试题
公司出纳岗位职责
2013/12/07 职场文书
2016年学习雷锋精神广播稿
2015/12/17 职场文书
工作总结之小学教师体育工作范文(3篇)
2019/10/07 职场文书
经典格言警句:没有热忱,世间便无进步
2019/11/13 职场文书
Go语言 go程释放操作(退出/销毁)
2021/04/30 Golang
DBCA命令行搭建Oracle ADG的流程
2021/06/11 Oracle
Java中的Kotlin 内部类原理
2022/06/16 Java/Android
小程序实现侧滑删除功能
2022/06/25 Javascript