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实现测试磁盘性能的方法
Mar 12 Python
在Linux上安装Python的Flask框架和创建第一个app实例的教程
Mar 30 Python
如何用Python实现简单的Markdown转换器
Jul 16 Python
Python实现分段线性插值
Dec 17 Python
利用Python正则表达式过滤敏感词的方法
Jan 21 Python
Centos7 下安装最新的python3.8
Oct 28 Python
Python FTP文件定时自动下载实现过程解析
Nov 12 Python
Python3 io文本及原始流I/O工具用法详解
Mar 23 Python
浅谈opencv自动光学检测、目标分割和检测(连通区域和findContours)
Jun 04 Python
python raise的基本使用
Sep 10 Python
如何用python 操作zookeeper
Dec 28 Python
Python Pygame实战在打砖块游戏的实现
Mar 17 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安装问题
2006/10/09 PHP
完美解决PHP中文乱码
2009/11/26 PHP
php中$this->含义分析
2009/11/29 PHP
一个经典的PHP文件上传类分享
2014/11/18 PHP
jQuery实现表单input中提示文字value随鼠标焦点移进移出而显示或隐藏的代码
2010/03/21 Javascript
获取焦点时,利用js定时器设定时间执行动作
2010/04/02 Javascript
JavaScript实用技巧(一)
2010/08/16 Javascript
js判断输入是否为正整数、浮点数等数字的函数代码
2010/11/17 Javascript
11个用于提高排版水平的基于jquery的文字效果插件
2012/09/14 Javascript
JavaScript代码复用模式实例分析
2012/12/02 Javascript
javascript学习笔记(七)Ajax和Http状态码
2014/10/08 Javascript
javascript作用域问题实例分析
2015/07/13 Javascript
node.js实现端口转发
2016/04/14 Javascript
javascript事件处理模型实例说明
2016/05/31 Javascript
用nodejs搭建websocket服务器
2017/01/23 NodeJs
Vue.2.0.5过渡效果使用技巧
2017/03/16 Javascript
JS实现table表格内针对某列内容进行即时搜索筛选功能
2018/05/11 Javascript
Angular2使用SVG自定义图表(条形图、折线图)组件示例
2019/05/10 Javascript
python实现探测socket和web服务示例
2014/03/28 Python
Python列表(list)常用操作方法小结
2015/02/02 Python
Python实现Windows上气泡提醒效果的方法
2015/06/03 Python
将Python字符串生成PDF的实例代码详解
2019/05/17 Python
Django使用中间件解决前后端同源策略问题
2019/09/02 Python
Python中itertools的用法详解
2020/02/07 Python
pytorch实现CNN卷积神经网络
2020/02/19 Python
python里的单引号和双引号的有什么作用
2020/06/17 Python
CSS3中border-radius属性设定圆角的使用技巧
2016/05/10 HTML / CSS
HTML5的标签的代码的简单介绍 HTML5标签的简介
2012/05/28 HTML / CSS
分解成质因数(如435234=251*17*17*3*2,据说是华为笔试题)
2014/07/16 面试题
what is the difference between ext2 and ext3
2015/08/25 面试题
留学自荐信的技巧
2013/10/17 职场文书
个人简历自我评价
2014/01/06 职场文书
《雨点儿》教学反思
2014/04/14 职场文书
货物运输服务质量承诺书
2014/05/29 职场文书
个人股份转让协议书范本
2014/10/26 职场文书
2015年财政所工作总结
2015/04/25 职场文书