• 售前

  • 售后

热门帖子
入门百科

Python 处理表格举行成绩排序的操纵代码

[复制链接]
今早我梦醒了坎 显示全部楼层 发表于 2021-8-14 13:07:07 |阅读模式 打印 上一主题 下一主题
一、需求分析

我们起首有一个成绩表单,但是学生的成绩是按照学号举行排序的,现在,我们盼望清晰明白的知道每一个学生的名次,而且需要将学生按照成绩的高低重新举行排序。
也就是说,我们将学生从按照学号排序变革为按照成绩从高到低举行排序。
二、代码呈现

这个需求实在比较简朴,于是,我们直接呈当代码,主要标题是Excel表格的读写操纵,这个办理以后就非常简朴了。
Excel读:xlrd模块
Excel写:xlwt模块
代码以及表明如下:
  1. import xlwt
  2. import xlrd
  3. # 导入模块
  4. wb = xlwt.Workbook()  
  5. # 创建 excel 表格
  6. xls_0 = xlrd.open_workbook("四年级1.xls")
  7. # 读取表格文件
  8. for i in range(4, 8, 1):
  9.     # 读取不同的表单
  10.     new_sheet = xls_0.sheet_by_index(i)
  11.     sh = wb.add_sheet(f'{new_sheet.name}.xls')  # 创建一个 表单
  12.     # 设置空列表进行数据的存储
  13.     id_list = []
  14.     name_list = []
  15.     score_list = []
  16.     # 读取表格的数据
  17.     for o in range(3):  # 3 列
  18.         for t in range(20):  # 20 行
  19.             # 获取学号、姓名、成绩等信息
  20.             id_list.append(new_sheet.cell(t + 3, 3 * o).value)
  21.             name_list.append(new_sheet.cell(t + 3, 3 * o + 1).value)
  22.             score_list.append(new_sheet.cell(t + 3, 3 * o + 2).value)
  23.     # 获取数据
  24.     # 进行一定的预处理,去除不存在的人
  25.     # 意思是说:有些位置是空的,这些位置需要去除掉
  26.     for number in range(len(id_list)):
  27.         # 由于进行的是删除操作,所以可能会出现下标越界的情况,为了防止这种情况的出现,我们进行异常处理
  28.         try:
  29.             if name_list[number] == '' or score_list[number] == '' or score_list[number] == '请假':
  30.                 # 这个实际上是去除空值
  31.                 id_list.pop(number)
  32.                 name_list.pop(number)
  33.                 score_list.pop(number)
  34.         except:
  35.             continue
  36.     # 去除不存在的人
  37.     # 进行排序的操作
  38.     for h in range(len(id_list)):
  39.         # len(id_list) 次循环
  40.         for s in range(len(id_list) - 1):
  41.             # 这里是进行 len(id_list) - 1 次循环
  42.             try:
  43.                 if score_list[s] >= score_list[s + 1]:
  44.                     pass
  45.                 else:
  46.                     score_list[s], score_list[s + 1] = score_list[s + 1], score_list[s]
  47.                     name_list[s], name_list[s + 1] = name_list[s + 1], name_list[s]
  48.                     id_list[s], id_list[s + 1] = id_list[s + 1], id_list[s]
  49.             except:
  50.                 continue
  51.     # 冒泡排序
  52.     # 将数据写入文件
  53.     position = 0
  54.    
  55.     for h in range(len(id_list)):
  56.         # 写入文件
  57.         sh.write(position, 0, id_list[h])
  58.         sh.write(position, 1, name_list[h])
  59.         sh.write(position, 2, score_list[h])
  60.         position += 1
  61.     # 写入文件中去
  62. # 保存文件
  63. wb.save(f'四年级1-五至八班-分数排序.xls')  
  64. # 保存
复制代码
在这里,我们使用了冒泡排序,当然,如果想要运行的更快一些,可以思量希尔排序,堆排序,快速排序等排序方式,但是要注意,学号、姓名、分数肯定要同时举行排序,就是说这三个量应该捆绑在一起移动,而移动的原则就是分数高低。
三、结果展示

图片1、

图片2、

图片3、

图片4、

到此这篇关于Python 处理惩罚表格举行成绩排序的操纵代码的文章就介绍到这了,更多相关Python成绩排序内容请搜索草根技能分享以前的文章或继承欣赏下面的相关文章盼望各人以后多多支持草根技能分享!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作