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发送email的3种方法
Apr 28 Python
浅析Python的web.py框架中url的设定方法
Jul 11 Python
回调函数的意义以及python实现实例
Jun 20 Python
python使用pyqt写带界面工具的示例代码
Oct 23 Python
Python CVXOPT模块安装及使用解析
Aug 01 Python
Python3之字节串bytes与字节数组bytearray的使用详解
Aug 27 Python
TensorFlow自定义损失函数来预测商品销售量
Feb 05 Python
python2 对excel表格操作完整示例
Feb 23 Python
使用python的turtle函数绘制一个滑稽表情
Feb 28 Python
Django-rest-framework中过滤器的定制实例
Apr 01 Python
使用Keras实现简单线性回归模型操作
Jun 12 Python
python编程学习使用管道Pipe编写优化代码
Nov 20 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
深入解析phpCB批量转换的代码示例
2013/06/27 PHP
php根据数据id自动生成编号的实现方法
2016/10/16 PHP
PHP中关键字interface和implements详解
2017/06/14 PHP
phpcms配置列表页以及获得文章发布时间
2017/07/04 PHP
关于 Laravel Redis 多个进程同时取队列问题详解
2017/12/25 PHP
基于jquery的让textarea自适应高度的插件
2010/08/03 Javascript
jquery.cookie用法详细解析
2013/12/18 Javascript
Nodejs使用mysql模块之获得更新和删除影响的行数的方法
2014/03/18 NodeJs
告诉你什么是javascript的回调函数
2014/09/04 Javascript
jQuery实现鼠标滑过Div层背景变颜色的方法
2015/02/17 Javascript
JS判断是否长按某一键的方法
2016/03/02 Javascript
前端框架Vue.js构建大型应用浅析
2016/09/12 Javascript
自动适应iframe右边的高度
2016/12/22 Javascript
详解闭包解决jQuery中AJAX的外部变量问题
2017/02/22 Javascript
js实现图片上传预览原理分析
2017/07/13 Javascript
Vue中之nextTick函数源码分析详解
2017/10/17 Javascript
基于vue2实现左滑删除功能
2017/11/28 Javascript
Phaser.js实现简单的跑酷游戏附源码下载
2018/10/26 Javascript
Swiper.js实现移动端元素左右滑动
2019/09/08 Javascript
在vue-cli创建的项目中使用sass操作
2020/08/10 Javascript
[10:49]2014国际邀请赛 叨叨刀塔第二期为真正的电竞喝彩
2014/07/21 DOTA
[01:56]林书豪DOTA2上海特级锦标赛励志短片
2016/03/05 DOTA
在Python中使用异步Socket编程性能测试
2014/06/25 Python
Python错误: SyntaxError: Non-ASCII character解决办法
2017/06/08 Python
Python判断两个文件是否相同与两个文本进行相同项筛选的方法
2019/03/01 Python
简单了解python filter、map、reduce的区别
2020/01/14 Python
如何在django中添加日志功能
2020/02/06 Python
python 批量将中文名转换为拼音
2021/02/07 Python
活动志愿者自荐信
2014/01/27 职场文书
生日庆典策划方案
2014/06/02 职场文书
节水标语大全
2014/06/11 职场文书
新手上路标语
2014/06/20 职场文书
爱与责任师德演讲稿
2014/08/26 职场文书
迎新生标语大全
2014/10/06 职场文书
2014年餐厅服务员工作总结
2014/11/18 职场文书
大学生青年志愿者活动总结
2015/05/06 职场文书