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构造icmp echo请求和实现网络探测器功能代码分享
Jan 10 Python
python处理html转义字符的方法详解
Jul 01 Python
Django返回json数据用法示例
Sep 18 Python
python实现字典(dict)和字符串(string)的相互转换方法
Mar 01 Python
利用pyinstaller或virtualenv将python程序打包详解
Mar 22 Python
查看django版本的方法分享
May 14 Python
python中计算一个列表中连续相同的元素个数方法
Jun 29 Python
解决tensorflow测试模型时NotFoundError错误的问题
Jul 27 Python
我用Python抓取了7000 多本电子书案例详解
Mar 25 Python
PYQT5设置textEdit自动滚屏的方法
Jun 14 Python
Python如何在windows环境安装pip及rarfile
Jun 15 Python
Python使用requests模块爬取百度翻译
Aug 25 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/10/04 PHP
解决Yii2邮件发送结果返回成功,但接收不到邮件的问题
2017/05/23 PHP
Yii2中简单的场景使用介绍
2017/06/02 PHP
Laravel使用支付宝进行支付的示例代码
2017/08/16 PHP
PHP实现APP微信支付的实例讲解
2018/02/10 PHP
PHP使用ajax的post方式下载excel文件简单示例
2019/08/06 PHP
TP5框架安全机制实例分析
2020/04/05 PHP
jQuery load方法用法集锦
2011/12/06 Javascript
javascript真的不难-回顾一下基础知识
2013/01/15 Javascript
打印json对象的内容及JSON.stringify函数应用
2013/03/29 Javascript
javascript loadScript异步加载脚本示例讲解
2013/11/14 Javascript
结合JQ1.9通过js正则判断各种浏览器版本的方法
2013/12/30 Javascript
jquery实现不同大小浏览器使用不同的css样式表的方法
2014/04/02 Javascript
javascript关于继承的用法汇总
2014/12/20 Javascript
js正则表达式验证邮件地址
2015/11/12 Javascript
全面了解JavaScript的数据类型转换
2016/07/01 Javascript
关于vue-router的beforeEach无限循环的问题解决
2017/09/09 Javascript
bootstrap可编辑下拉框jquery.editable-select
2017/10/12 jQuery
vue 动态修改a标签的样式的方法
2018/01/18 Javascript
Vue通过for循环随机生成不同的颜色或随机数的实例
2019/11/09 Javascript
vue(2.x,3.0)配置跨域代理
2019/11/27 Javascript
vue+echarts实现动态折线图的方法与注意
2020/09/01 Javascript
antd table按表格里的日期去排序操作
2020/11/17 Javascript
Python的高级Git库 Gittle
2014/09/22 Python
Python实现将doc转化pdf格式文档的方法
2018/01/19 Python
python+pandas+时间、日期以及时间序列处理方法
2018/07/10 Python
使用Python OpenCV为CNN增加图像样本的实现
2019/06/10 Python
python实现socket+threading处理多连接的方法
2019/07/23 Python
python爬虫 基于requests模块发起ajax的get请求实现解析
2019/08/20 Python
django 模型字段设置默认值代码
2020/07/15 Python
阿拉伯世界最大的电子商务网站:Souq沙特阿拉伯
2016/10/28 全球购物
薇姿法国官网:Vichy法国
2021/01/28 全球购物
幼儿园元旦家长感言
2014/02/27 职场文书
我的中国梦口号
2014/06/16 职场文书
如何才能写好调研报告?
2019/07/03 职场文书
自动在Windows中运行Python脚本并定时触发功能实现
2021/09/04 Python