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中3种内建数据结构:列表、元组和字典
Nov 30 Python
Python数据结构之翻转链表
Feb 25 Python
python实现随机调用一个浏览器打开网页
Apr 21 Python
python中的常量和变量代码详解
Jul 25 Python
使用python3实现操作串口详解
Jan 01 Python
解决pyecharts在jupyter notebook中使用报错问题
Apr 23 Python
Python 一键获取百度网盘提取码的方法
Aug 01 Python
python实现通过flask和前端进行数据收发
Aug 22 Python
python3将变量写入SQL语句的实现方式
Mar 02 Python
PyTorch实现重写/改写Dataset并载入Dataloader
Jul 14 Python
Python识别处理照片中的条形码
Nov 16 Python
python 详解turtle画爱心代码
Feb 15 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提交后跳转
2013/06/23 PHP
漂亮的widgets,支持换肤和后期开发新皮肤
2007/04/23 Javascript
Locate a File Using a File Open Dialog Box
2007/06/18 Javascript
javascript parseInt 大改造
2009/09/27 Javascript
jQuery弹出层始终垂直居中相对于屏幕或当前窗口
2013/04/01 Javascript
js分页工具实例
2015/01/28 Javascript
在Node.js中使用HTTP上传文件的方法
2015/06/23 Javascript
如何利用AngularJS打造一款简单Web应用
2015/12/05 Javascript
JQuery导航菜单选择特效
2016/04/11 Javascript
vue之nextTick全面解析
2017/05/17 Javascript
详解react-native WebView 返回处理(非回调方法可解决)
2018/02/27 Javascript
vuedraggable+element ui实现页面控件拖拽排序效果
2020/07/29 Javascript
详解项目升级到vue-cli3的正确姿势
2019/01/28 Javascript
如何在VUE中使用vue-awesome-swiper
2021/01/04 Vue.js
[09:37]DOTA2卡尔工作室 英雄介绍圣堂刺客篇
2013/06/13 DOTA
python 写的一个爬虫程序源码
2016/02/28 Python
django模型层(model)进行建表、查询与删除的基础教程
2017/11/21 Python
python3.6利用pyinstall打包py为exe的操作实例
2018/10/31 Python
详解Python下Flask-ApScheduler快速指南
2018/11/04 Python
关于TensorFlow新旧版本函数接口变化详解
2020/02/10 Python
简单了解Django项目应用创建过程
2020/07/06 Python
canvas像素画板的实现代码
2018/11/21 HTML / CSS
用HTML5实现鼠标滚轮事件放大缩小图片的功能
2015/06/25 HTML / CSS
浅析HTML5的WebSocket与服务器推送事件
2016/02/19 HTML / CSS
挪威手表购物网站:Klokker
2016/09/19 全球购物
实习护士自我鉴定
2013/10/13 职场文书
实习生自我评价
2014/01/18 职场文书
实习生岗位职责
2014/04/12 职场文书
烹饪大赛策划方案
2014/05/26 职场文书
基层党建工作宣传标语
2014/06/24 职场文书
支部书记四风对照材料
2014/08/28 职场文书
纪念九一八爱国演讲稿600字
2014/09/14 职场文书
公司授权委托书格式样本
2014/10/01 职场文书
护理实习生带教计划
2015/01/16 职场文书
2016年基层党组织公开承诺书
2016/03/25 职场文书
Python 实现Mac 屏幕截图详解
2021/10/05 Python