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的Django框架中编写错误提示页面
Jul 22 Python
python Django批量导入不重复数据
Mar 25 Python
Python实现的单向循环链表功能示例
Nov 10 Python
基于Pandas读取csv文件Error的总结
Jun 15 Python
python opencv人脸检测提取及保存方法
Aug 03 Python
浅谈Python大神都是这样处理XML文件的
May 31 Python
使用pyshp包进行shapefile文件修改的例子
Dec 06 Python
关于Keras模型可视化教程及关键问题的解决
Jan 24 Python
python实现TCP文件传输
Mar 20 Python
Keras模型转成tensorflow的.pb操作
Jul 06 Python
Python3.9.0 a1安装pygame出错解决全过程(小结)
Feb 02 Python
python 网络编程要点总结
Jun 18 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
新的一年,新的期待:DC在2020年的四部动画电影
2020/01/01 欧美动漫
对Session和Cookie的区分与解释
2007/03/16 PHP
php中文字符截取防乱码
2008/03/28 PHP
CodeIgniter采用config控制的多语言实现根据浏览器语言自动转换功能
2014/07/18 PHP
php输出指定时间以前时间格式的方法
2015/03/21 PHP
php基于dom实现的图书xml格式数据示例
2017/02/03 PHP
PHP简单实现合并2个数字键数组值的方法
2017/05/30 PHP
JavaScript Chart 插件整理
2010/06/18 Javascript
JQuery扩展插件Validate—4设置错误提示的样式
2011/09/05 Javascript
JavaScript获取和设置CheckBox状态的简单方法
2013/07/05 Javascript
JavaScript生成随机数的4种自定义函数分享
2015/02/28 Javascript
javascript实现通过表格绘制颜色填充矩形的方法
2015/04/21 Javascript
Javascript实现网络监测的方法
2015/07/31 Javascript
JavaScript是如何实现继承的(六种方式)
2016/03/31 Javascript
angularjs实现搜索的关键字在正文中高亮出来
2017/06/13 Javascript
JavaScript中常见的八个陷阱总结
2017/06/28 Javascript
详解微信小程序与内嵌网页交互实现支付功能
2018/10/22 Javascript
Openlayers显示瓦片网格信息的方法
2020/09/28 Javascript
vue打开新窗口并实现传参的图文实例
2021/03/04 Vue.js
python服务器与android客户端socket通信实例
2014/11/12 Python
Python selenium 三种等待方式解读
2016/09/15 Python
Python socket套接字实现C/S模式远程命令执行功能案例
2018/07/06 Python
Python序列化与反序列化pickle用法实例
2019/11/11 Python
使用python动态生成波形曲线的实现
2019/12/04 Python
使用python修改文件并立即写回到原始位置操作(inplace读写)
2020/06/28 Python
使用canvas绘制贝塞尔曲线
2014/12/17 HTML / CSS
澳大利亚鞋仓库:Shoe Warehouse
2019/07/25 全球购物
Whistles官网:英国女装品牌
2020/08/14 全球购物
新浪网技术部笔试题
2016/08/26 面试题
建筑个人求职信范文
2014/01/25 职场文书
上课随便讲话检讨书
2014/09/12 职场文书
2014年班长个人工作总结
2014/11/14 职场文书
医药公司开票员岗位职责
2015/04/15 职场文书
不同意离婚答辩状
2015/05/22 职场文书
开学典礼致辞
2015/07/29 职场文书
自动在Windows中运行Python脚本并定时触发功能实现
2021/09/04 Python