实例10—快速处理期末考试成绩等级和偏科
模拟场景需求:
全国一盘 棋,贯彻双减工作要求,从三年级开始才进行期末考试,并且不能公布成绩,所以我们采取一致坚持的等级公布方式,ABCDE五个等级,还有简单检测学生是否存在语数偏科现象,当然可以通过Excel进行操作,这里主要是讲解Python的第三方库openpyxl的实践问题。
1、用到的知识点:
Python的判断和循环,自定义函数,wb对象基本操作包括创建和保存,cell单元格的读取和写入等。
2、用到的文件:
期末考试成绩单,要求是xlsx扩展名的,非隐私数据
3、代码操作编写截图:
give your the code:
from openpyxl import Workbook,load_workbook
# 等级函数,根据分数返回ABCDE级别
def level(grade=0):
grade = int(grade)
if grade >= 90:
ret = 'A'
elif grade >= 80:
ret = 'B'
elif grade >= 70:
ret = 'C'
elif grade >= 60:
ret = 'D'
else:
ret = 'E'
return ret
# 简单定义偏科函数
def gap(a=0,b=0):
var = abs(a-b)
if var >= 30:
ret = '严重偏科'
elif var >= 20:
ret = '偏科'
elif var >= 10:
ret = '稍微偏科'
elif var >= 0:
ret = '不偏科'
return ret
# 导入成绩表格
wb = load_workbook('total.xlsx')
ws = wb.active
# 循环处理行
for i in range(3,ws.max_row+1):
chinese_level = level(ws.cell(i,3).value) # 判断语文等级
ws.cell(i,4).value = chinese_level # 以写返回值的方式写入语文等级
math_level = level(ws.cell(i,5).value) # 判断数学等级
ws.cell(i,6).value = math_level # 同样方式写入数学等级
ws.cell(i,7).value = f"=sum(C{i},E{i})" # 以写入好函数的方式写入总分
# 简单判断是否偏科
ws.cell(i,8).value = gap(ws.cell(i,3).value,ws.cell(i,5).value)
wb.save('ok.xlsx')
今天的例子要活学活用,关键练基础,熟悉python的openpyxl处理表格的思路,愿一路学习一路有你,操作基础已经更新完毕,不懂可以参阅<python办公自动化openpyxl处理excel(基础篇)>