新闻动态

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

发布日期:2022-02-21 16:35 | 文章来源:站长之家

一、需求分析

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

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

二、代码呈现

这个需求其实比较简单,于是,我们直接呈现代码,主要问题是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、

图片2、


图片3、

图片4、

到此这篇关于Python 处理表格进行成绩排序的操作代码的文章就介绍到这了,更多相关Python成绩排序内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!

国外服务器租用

版权声明:本站文章来源标注为YINGSOO的内容版权均为本站所有,欢迎引用、转载,请保持原文完整并注明来源及原文链接。禁止复制或仿造本网站,禁止在非www.yingsoo.com所属的服务器上建立镜像,否则将依法追究法律责任。本站部分内容来源于网友推荐、互联网收集整理而来,仅供学习参考,不代表本站立场,如有内容涉嫌侵权,请联系alex-e#qq.com处理。

相关文章

实时开通

自选配置、实时开通

免备案

全球线路精选!

全天候客户服务

7x24全年不间断在线

专属顾问服务

1对1客户咨询顾问

在线
客服

在线客服:7*24小时在线

客服
热线

400-630-3752
7*24小时客服服务热线

关注
微信

关注官方微信
顶部