|
发表于 2020-12-4 20:14:19
|
显示全部楼层
本楼为最佳答案
 - import xlwt
- data = [
- ["小花",99,100,98.5],#1
- ["小王",90,30.5,95],#
- ["小明",67.5,49.6,88],
- ["大佬",38,93,66],
- ["花花",60,49,88],
- ["天天",67,46,80],
- ["阿明",75,96,68],
- ["阿炳",44,55,77],
- ["阿冰",66,88,77],
- ["大梦",100,100,100]#
- ]
- def build_data(source):
- for item in source:
- sum_score = sum(item[1:])#算总分
- avg_score = round(sum_score / 3,1) #算平均分,round取两位小数
-
- item.append(avg_score)
- return source
- def build_sort(target):
- target_list = list()
- for item in target:
- target_list.append(item)
- target_list.sort(key = lambda x: x[-1], reverse=True)
- result = dict()
- for row, item in enumerate(target_list, 1):
- result[item[0]] = row
- return result
- def append_sort(data):
- source = build_data(data)
- dict_sort = build_sort(source)
- for item in source:
- item.append(dict_sort[item[0]])
- return source
- def last_row(source):
- result = ['平均分', 0, 0, 0, 0, '']
- row = 0
- for item in source:
- row += 1
- row_list = item[1 : -1]
- for col, col_item in enumerate(row_list, 1):
- result[col] += col_item
- for col, item in enumerate(result[1 : -1], 1):
- item = round(item / row, 1)
- result[col] = item
-
- return result
-
- def build_excel(data):
- result = append_sort(data)
- last_line = last_row(result)
- result.append(last_line)
- book = xlwt.Workbook()
- sheet = book.add_sheet("学生成绩")
- title = ['姓名','语文成绩','数学成绩','英语成绩','平均分','排名']
- for col, item in enumerate(title):
- sheet.write(0, col, item)
- for row, line in enumerate(result, 1):
- for col, value in enumerate(line):
- sheet.write(row, col, value)
-
- book.save("students.xls")
- if __name__ == '__main__':
- build_excel(data)
复制代码 |
|