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 相关文章推荐
35个Python编程小技巧
Apr 01 Python
老生常谈Python序列化和反序列化
Jun 28 Python
关于Django显示时间你应该知道的一些问题
Dec 25 Python
使用python实现链表操作
Jan 26 Python
python 递归深度优先搜索与广度优先搜索算法模拟实现
Oct 22 Python
Python操作mongodb数据库的方法详解
Dec 08 Python
Django 后台获取文件列表 InMemoryUploadedFile的例子
Aug 07 Python
python科学计算之numpy——ufunc函数用法
Nov 25 Python
Python 格式化打印json数据方法(展开状态)
Feb 27 Python
使用Pycharm(Python工具)新建项目及创建Python文件的教程
Apr 26 Python
Python2.x与3​​.x版本有哪些区别
Jul 09 Python
详解基于python的全局与局部序列比对的实现(DNA)
Oct 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
农民和部队如何穿矿
2020/03/04 星际争霸
如何在PHP中使用Oracle数据库(2)
2006/10/09 PHP
并发下常见的加锁及锁的PHP具体实现代码
2010/10/12 PHP
第六章 php目录与文件操作
2011/12/30 PHP
php 保留字列表
2012/10/04 PHP
ubuntu下编译安装xcache for php5.3 的具体操作步骤
2013/06/18 PHP
destoon实现调用热门关键字的方法
2014/07/15 PHP
php一行代码获取文件后缀名实例分析
2014/11/12 PHP
跟着JQuery API学Jquery 之二 属性
2010/04/09 Javascript
菜鸟javascript基础整理1
2010/12/06 Javascript
基于jquery库的tab新形式使用
2012/11/16 Javascript
浏览器图片选择预览、旋转、批量上传的JS代码实现
2013/12/04 Javascript
使用Jquery获取带特殊符号的ID 标签的方法
2014/04/30 Javascript
JavaScript 获取任一float型小数点后两位的小数
2014/06/30 Javascript
深入理解JavaScript系列(18):面向对象编程之ECMAScript实现
2015/03/05 Javascript
JS实现的简单图片切换功能示例【测试可用】
2017/02/14 Javascript
Vue 2.0的数据依赖实现原理代码简析
2017/07/10 Javascript
Vue 2.0学习笔记之使用$refs访问Vue中的DOM
2017/12/19 Javascript
基于Nodejs的Tcp封包和解包的理解
2018/09/19 NodeJs
vue实现局部刷新的实现示例
2019/04/16 Javascript
js 将线性数据转为树形的示例代码
2019/05/28 Javascript
jquery将json转为数据字典的实例代码
2019/10/11 jQuery
node.js express捕获全局异常的三种方法实例分析
2019/12/27 Javascript
基于Echarts图表在div动态切换时不显示的解决方式
2020/07/20 Javascript
axios封装与传参示例详解
2020/10/18 Javascript
python 删除列表里所有空格项的方法总结
2018/04/18 Python
解析PyCharm Python运行权限问题
2020/01/08 Python
Python代码执行时间测量模块timeit用法解析
2020/07/01 Python
css3 transform过渡抖动问题解决
2020/10/23 HTML / CSS
元旦促销方案
2014/03/15 职场文书
经费申请报告
2015/05/15 职场文书
导游词之阆中古城
2019/12/23 职场文书
浅谈JS的二进制家族
2021/05/09 Javascript
Centos环境下Postgresql 安装配置及环境变量配置技巧
2021/05/18 PostgreSQL
SpringBoot中获取profile的方法详解
2022/04/08 Java/Android
Mysql InnoDB 的内存逻辑架构
2022/05/06 MySQL