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回调函数的使用方法
Jan 23 Python
Python的ORM框架中SQLAlchemy库的查询操作的教程
Apr 25 Python
python中字符串前面加r的作用
Jun 04 Python
八大排序算法的Python实现
Jan 28 Python
在python中实现强制关闭线程的示例
Jan 22 Python
python实现AES加密与解密
Mar 28 Python
华为校园招聘上机笔试题 扑克牌大小(python)
Apr 22 Python
详解python websocket获取实时数据的几种常见链接方式
Jul 01 Python
Python 解析pymysql模块操作数据库的方法
Feb 18 Python
python邮件中附加文字、html、图片、附件实现方法
Jan 04 Python
pycharm 使用anaconda为默认环境的操作
Feb 05 Python
基于tensorflow权重文件的解读
May 26 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实现发送微信模板消息的方法
2015/03/07 PHP
全面解析PHP验证码的实现原理 附php验证码小案例
2016/08/17 PHP
JS 页面内容搜索,类似于 Ctrl+F功能的实现代码
2007/08/13 Javascript
jquery下将选择的checkbox的id组成字符串的方法
2010/11/28 Javascript
js,jQuery 排序的实现代码,网页标签排序的实现,标签排序
2011/04/27 Javascript
jQuery对val和atrr("value")赋值的区别介绍
2014/09/26 Javascript
JavaScript基础知识学习笔记
2014/12/02 Javascript
javascript删除元素节点removeChild()用法实例
2015/05/26 Javascript
jquery html动态添加的元素绑定事件详解
2016/05/24 Javascript
深入理解Node.js 事件循环和回调函数
2016/11/02 Javascript
详解在Vue中如何使用axios跨域访问数据
2017/07/07 Javascript
js统计页面上每个标签的数量实例代码
2018/05/29 Javascript
vue中uni-app 实现小程序登录注册功能
2019/10/12 Javascript
JavaScript canvas动画实现时钟效果
2020/02/10 Javascript
如何在Vue.JS中使用图标组件
2020/08/04 Javascript
详解Python中where()函数的用法
2018/03/27 Python
关于python写入文件自动换行的问题
2018/06/23 Python
Python生成MD5值的两种方法实例分析
2019/04/26 Python
Python中的上下文管理器相关知识详解
2019/09/19 Python
Pycharm自带Git实现版本管理的方法步骤
2020/09/18 Python
HTML5 Canvas锯齿图代码实例
2014/04/10 HTML / CSS
Foreo国际站:Foreo International
2018/10/29 全球购物
总裁岗位职责
2013/12/04 职场文书
军训心得体会
2013/12/31 职场文书
电钳专业个人求职信
2014/01/04 职场文书
教师职称自我鉴定
2014/02/12 职场文书
2014年五四青年节活动策划书
2014/04/22 职场文书
网络技术专业求职信
2014/05/02 职场文书
市级绿色学校申报材料
2014/08/25 职场文书
民主生活会对照检查材料思想汇报
2014/09/27 职场文书
单位工作证明书格式
2014/10/04 职场文书
2015年公民道德宣传日活动总结
2015/03/23 职场文书
网络营销实训总结
2015/08/03 职场文书
争做文明公民倡议书
2019/06/24 职场文书
js中Object.create实例用法详解
2021/10/05 Javascript
解决IDEA翻译插件Translation报错更新TTK失败不能使用
2022/04/24 Python