Python 处理表格进行成绩排序的操作代码

作者:hhh_Moon_hhh 时间:2022-08-25 02:49:36 

一、需求分析

我们首先有一个成绩表单,但是学生的成绩是按照学号进行排序的,现在,我们希望清晰明了的知道每一个学生的名次,并且需要将学生按照成绩的高低重新进行排序。

也就是说,我们将学生从按照学号排序转变为按照成绩从高到低进行排序。

二、代码呈现

这个需求其实比较简单,于是,我们直接呈现代码,主要问题是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 处理表格进行成绩排序的操作代码

来源:https://blog.csdn.net/m0_54218263/article/details/119053466

标签:Python,成绩,排序
0
投稿

猜你喜欢

  • Python+OpenCV实现图像的全景拼接

    2023-12-01 11:47:29
  • 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接,错误:“The server selected protocol version TLS10 is not accepted by client

    2024-01-14 21:42:28
  • 使用ASP常见问题解答

    2007-10-11 14:07:00
  • Python Tkinter 简单登录界面的实现

    2021-01-10 20:45:03
  • python eval()函数使用详情

    2021-10-17 02:09:23
  • Centos7使用yum安装Mysql5.7.19的详细步骤

    2024-01-24 13:01:56
  • Python对切片命名的实现方法

    2023-09-30 09:43:15
  • Python设计模式创建型原型模式

    2023-07-21 21:19:25
  • Python中的文本相似度的计算方法总结

    2021-02-08 08:40:37
  • javascript实现多栏闭合展开式广告位菜单效果实例

    2024-04-29 14:07:44
  • 网页设计软件FrontPage快捷键一览

    2008-02-24 16:55:00
  • 详解Python验证码识别

    2023-11-12 23:46:40
  • asp如何制作一个小巧的购物车?

    2010-07-07 12:25:00
  • golang中tar压缩和解压文件详情

    2024-05-10 13:58:46
  • 深入理解MySQL重做日志 redo log

    2024-01-13 22:25:36
  • 一个ASP记录集分页显示的例子

    2007-09-14 10:57:00
  • Golang 实现复制文件夹同时复制文件

    2024-02-09 10:57:26
  • python使用__slots__让你的代码更加节省内存

    2023-03-15 06:33:57
  • MYSQL插入处理重复键值的几种方法

    2024-01-22 05:41:28
  • MySQL存储过程中游标循环的跳出和继续操作示例

    2024-01-25 05:32:04
  • asp之家 网络编程 m.aspxhome.com