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入门篇之正则表达式
Oct 20 Python
python实现折半查找和归并排序算法
Apr 14 Python
Python中的defaultdict与__missing__()使用介绍
Feb 03 Python
Python实现的求解最大公约数算法示例
May 03 Python
实例讲解Python脚本成为Windows中运行的exe文件
Jan 24 Python
Python中的asyncio代码详解
Jun 10 Python
Python read函数按字节(字符)读取文件的实现
Jul 03 Python
django rest framework 自定义返回方式
Jul 12 Python
浅析NumPy 切片和索引
Sep 02 Python
Python 调用 ES、Solr、Phoenix的示例代码
Nov 23 Python
pandas中对文本类型数据的处理小结
Nov 01 Python
Python OpenCV实现图像模板匹配详解
Apr 07 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
IStream与TStream之间的相互转换
2008/08/01 PHP
PHP 一个随机字符串生成代码
2010/05/26 PHP
一个基于PDO的数据库操作类
2011/03/24 PHP
php中让上传的文件大小在上传前就受限制的两种解决方法
2013/06/24 PHP
php中Session的生成机制、回收机制和存储机制探究
2014/08/19 PHP
使用PHP如何实现高效安全的ftp服务器(二)
2015/12/30 PHP
php格式文件打开的四种方法
2018/02/24 PHP
PHP实现小程序批量通知推送
2018/11/27 PHP
判断js中各种数据的类型方法之typeof与0bject.prototype.toString讲解
2013/11/07 Javascript
JavaScript中的alert()函数使用技巧详解
2014/12/29 Javascript
使用JavaScript实现旋转的彩圈特效
2015/06/23 Javascript
浅析AngularJs HTTP响应拦截器
2015/12/28 Javascript
jQuery中的一些常见方法小结(推荐)
2016/06/13 Javascript
Node.js的基本知识简单汇总
2016/09/19 Javascript
在 Angular 中实现搜索关键字高亮示例
2017/03/21 Javascript
vue基于Vue2.0和高德地图的地图组件实例
2017/04/28 Javascript
JavaScript对JSON数据进行排序和搜索
2017/07/24 Javascript
通过V8源码看一个关于JS数组排序的诡异问题
2017/08/14 Javascript
vue利用better-scroll实现轮播图与页面滚动详解
2017/10/20 Javascript
select获取下拉框的值 下拉框默认选中方法
2018/02/28 Javascript
在Python编程过程中用单元测试法调试代码的介绍
2015/04/02 Python
python实现内存监控系统
2021/03/07 Python
Python 使用threading+Queue实现线程池示例
2019/12/21 Python
简单了解python shutil模块原理及使用方法
2020/04/28 Python
python:删除离群值操作(每一行为一类数据)
2020/06/08 Python
python中xlrd模块的使用详解
2021/02/01 Python
美国在线精品家居网站:Burke Decor
2017/04/12 全球购物
彪马西班牙官网:PUMA西班牙
2019/06/18 全球购物
介绍一下#error预处理
2015/09/25 面试题
大学生实习期自我评价范文
2013/10/03 职场文书
蜜蜂引路教学反思
2014/02/04 职场文书
2014四风问题对照检查材料范文
2014/09/15 职场文书
2014年度培训工作总结
2014/11/27 职场文书
关于幸福的感言
2015/08/03 职场文书
2019年国庆祝福语(70句)
2019/09/19 职场文书
MySQL中InnoDB存储引擎的锁的基本使用教程
2021/05/26 MySQL