这是将一个表格中的成绩通过xlrd 打开将成绩一览输出,然后将里面的成绩进行比较,得出不同的等级,这些等级再形成一个列表,根据这些做出一个图
这个python程序应该怎么写呢?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 二九筒 2022-05-12 16:39关注
import xlrd from matplotlib import pyplot as plt #表格属性为姓名+语文+数学+英语+科学 对应这几个字段 class Score_level_map: scoreList = [] levelList = [] def __init__(self): self.file = xlrd.open_workbook("C:/Users/suoer/Desktop/1.xls") def getSource(self): table=self.file.sheets()[0] for i in range(table.nrows): if i!=0: data =table.row_values(i) self.scoreList.append(data) def getLevel(self): for i in self.scoreList: list = [i[0]] for s in i: if type(s)!=str: if s>=90: list.append("优秀") elif 80<=s<=89: list.append("良好") elif 70<=s<=79: list.append("中等") elif 60<=s<=69: list.append("及格") elif s<60: list.append("不及格") self.levelList.append(list) print(self.levelList) #只是一个学科的统计图 def getShape(self): fig = plt.figure() labels = '优秀', '良好', '中等', '及格','不及格' sizes = [] a=0 b=0 c=0 d=0 e=0 for i in self.levelList: if i[1]=="优秀": a+=1 elif i[1]=="良好": b+=1 elif i[1]=="中等": c+=1 elif i[1]=="及格": d+=1 elif i[1]=="不及格": e+=1 Sum=a+b+c+d+e sizes.append(a/Sum) sizes.append(b/Sum) sizes.append(c/Sum) sizes.append(d/Sum) sizes.append(e/Sum) explode = (0, 0, 0, 0, 0) # only "explode" the 2nd slice (i.e. 'Hogs') fig1, (ax1, ax2) = plt.subplots(2) ax1.pie(sizes, labels=labels, autopct='%1.1f%%', shadow=True) ax1.axis('equal') ax2.pie(sizes, autopct='%1.1f%%', shadow=True, startangle=90, explode=explode, pctdistance=1.12) ax2.axis('equal') ax2.legend(labels=labels, loc='upper right') plt.show() def main(self): self.getSource() self.getLevel() self.getShape() if __name__=="__main__": Score_level_map().main()
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 数据量少可以用MK趋势分析吗
- ¥15 使用VH6501干扰RTR位,CANoe上显示的错误帧不足32个就进入bus off快慢恢复,为什么?
- ¥15 大智慧怎么编写一个选股程序
- ¥100 python 调用 cgps 命令获取 实时位置信息
- ¥15 两台交换机分别是trunk接口和access接口为何无法通信,通信过程是如何?
- ¥15 C语言使用vscode编码错误
- ¥15 用KSV5转成本时,如何不生成那笔中间凭证
- ¥20 ensp怎么配置让PC1和PC2通讯上
- ¥50 有没有适合匹配类似图中的运动规律的图像处理算法
- ¥15 dnat基础问题,本机发出,别人返回的包,不能命中