day7_homework

8、有一个存着学生成绩的文件,里面存的是json串,json串读起来特别不直观,需要你写代码把它都写到excel中,并计算出总分和平均分,json格式如下

写完之后excel格式如下:

 

#需求分析:
# 1、先写表头,表头包含学号、姓名、语文成绩、数学成绩、英语成绩、总分、平均分
# 2、把表头信息存在一个list里面,写进去
# 3、读json串,把json转成字典
# 4、通过字典的key把里面的value取出来,再把存成绩的list,把成绩取出来,计算成绩写到excel
# 5、用到的模块有wlwt,json
import xlwt,json
title = ['学号', '姓名', '语文成绩', '数学成绩', '英语成绩', '总分', '平均分']
f = open('score.json',encoding = 'utf8') # 事先把json串写到score.json文件里
score_dict = json.load(f) # json串转成字典
# print(score_dict)打印出{'1': ['小花', 99, 100, 98.5], '2': ['小王', 90, 30.5, 95], '3': ['小明', 67.5, 49.6, 88]}
book = xlwt.Workbook() # 创建一个excel
sheet = book.add_sheet('Sheet1') # 添加一个sheet页
for i in range(len(title)): # 循环列
sheet.write(0, i, title[i]) # 将title数组中的字段写入到0行i列中,写表头
row = 1 # 外层循环的行,行变列不变
for k in sorted(score_dict):
lis = score_dict[k] # 通过k打印出k对应的list
lis.insert(0,k) # 把学号插入到下标为0的地方,如[1,"小花",99,100,98.5]
three_subject = lis[2:] # 通过切片取到三门科目的成绩,如[99,100,98.5]
total_score = sum(three_subject) # 三门课的总分数
avg_score = round(total_score/len(three_subject),2) # 平均分数取两位小数
lis.append(total_score) # 把总分添加到list里面最后一个元素
lis.append(avg_score) # 把平均分添加到list里面最后一个元素
col = 0 # 列数为0
for i in lis:
sheet.write(row,col,i)
col = col + 1
row = row + 1
book.save('score.xls')

转载于:https://www.cnblogs.com/laosun0204/p/8549517.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值