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的web.py框架实现类似Django的ORM查询的教程
May 02 Python
Python实现根据IP地址和子网掩码算出网段的方法
Jul 30 Python
python开发之thread实现布朗运动的方法
Nov 11 Python
Python中格式化format()方法详解
Apr 01 Python
python中numpy包使用教程之数组和相关操作详解
Jul 30 Python
mysql 之通过配置文件链接数据库
Aug 12 Python
Python实现基于二叉树存储结构的堆排序算法示例
Dec 08 Python
Python读写/追加excel文件Demo分享
May 03 Python
Python字符串的全排列算法实例详解
Jan 07 Python
Python使用pymysql模块操作mysql增删改查实例分析
Dec 19 Python
python环境搭建和pycharm的安装配置及汉化详细教程(零基础小白版)
Aug 19 Python
关于Python 解决Python3.9 pandas.read_excel(‘xxx.xlsx‘)报错的问题
Nov 28 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-redis中文文档介绍
2013/02/07 PHP
PHP代码审核的详细介绍
2013/06/13 PHP
php求两个目录的相对路径示例(php获取相对路径)
2014/03/27 PHP
PHP底层运行机制与工作原理详解
2020/07/31 PHP
$.ajax json数据传递方法
2008/11/19 Javascript
多浏览器兼容的获取元素和鼠标的位置的js代码
2009/12/15 Javascript
JQuery 常用操作代码
2010/03/14 Javascript
事件模型在各浏览器中存在差异
2010/10/20 Javascript
jQuery的12招常用技巧分享
2011/08/08 Javascript
JavaScript创建一个欢迎cookie弹出窗实现代码
2013/03/15 Javascript
js如何获取object类型里的键值
2014/02/18 Javascript
JS实现仿google、百度搜索框输入信息智能提示的实现方法
2015/04/20 Javascript
动态加载js文件简单示例
2016/04/21 Javascript
AngularJS模块详解及示例代码
2016/08/17 Javascript
第一次接触神奇的Bootstrap
2016/10/14 Javascript
jquery网页日历显示控件calendar3.1使用详解
2016/11/24 Javascript
Javascript 实现全屏滚动实例代码
2016/12/31 Javascript
Vue结合后台导入导出Excel问题详解
2019/02/19 Javascript
微信小程序自定义弹窗实现详解(可通用)
2019/07/04 Javascript
vue+element table表格实现动态列筛选的示例代码
2021/01/14 Vue.js
[53:15]Newbee vs Pain 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python实现定制交互式命令行的方法
2014/07/03 Python
Python实现程序的单一实例用法分析
2015/06/03 Python
bat和python批量重命名文件的实现代码
2016/05/19 Python
python Selenium爬取内容并存储至MySQL数据库的实现代码
2017/03/16 Python
解决pycharm无法识别本地site-packages的问题
2018/10/13 Python
详解Python学习之安装pandas
2019/04/16 Python
Python3列表List入门知识附实例
2020/02/09 Python
Python使用QQ邮箱发送邮件实例与QQ邮箱设置详解
2020/02/18 Python
高校自主招生自荐信
2013/12/09 职场文书
事业单位考核材料
2014/05/21 职场文书
终止劳动合同通知书
2015/04/16 职场文书
民事起诉书范本
2015/05/19 职场文书
2015年物业公司保洁工作总结
2015/10/22 职场文书
浅谈Python数学建模之固定费用问题
2021/06/23 Python