描述

76 成绩分析综合 - 图1‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
附件文件 “成绩统计.csv”内容形如上图,其中记录了学生8次实验课的成绩,请编写程序,根据输入分别完成以下任务(各任务独立,可分别完成):‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
当输入为 1 时:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
再读入一个正整数 m,读取附件文件的前 m 行并输出(格式见示例)。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
当输入为 2 时:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
再读入一个正整数n(1~8之间的整数),要求将文件中的数据转为二维列表,每行数据根据逗号分隔切分为一个列表,作为二维列表中的一个元素。根据输入的数字n,将列表按实验n对应的分数值进行降序排序,并输出排序后结果的前6个元素。输出格式见示例。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
当输入为 3 时:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
再输入一个正整数p,要求根据每次实验成绩占12.5%的比例来计算总评成绩,输出前 p位同学的实验课总评成绩(结果用str.format()函数保留一位小数)。输出格式见示例。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
当输入为 4 时
计算文件中全部学生总评成绩的平均值和中位数,在输出时保留1位小数。(小数保留方法与选项3相同,示例中数值为模拟值,真实值需通过程序计算获得)‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
中位数(又称中值,英语:Median),统计学中的专有名词,代表一个样本、种群或概率分布中的一个数值,其可将数值集合划分为相等的上下两部分。 对于有限的数集,可以通过把所有值高低排序后找出正中间的一个值作为中位数。如果观察值有偶数个,通常取最中间的两个数值的平均数作为中位数。

当输入不属于1~4中的数字时,输出 “请输入1-4中的一个数字” 并结束程序。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

输入格式

输入‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬1、2、3 时需再输入一个正整数,输入 4 或其他数字时不需要再输入其他数字‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

输出格式

参考题目要求和示例‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

输入输出示例

输入 输出
示例 1 1 ‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
2‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
姓名,学号,实验一,实验二,实验三,实验四,实验五,实验六,实验七,实验八
叶灿,0121713590221,85,90,90,90,88,85,60,100‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
示例 2 2‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
1‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
[[‘姓名’, ‘学号’, ‘实验一’, ‘实验二’, ‘实验三’, ‘实验四’, ‘实验五’, ‘实验六’, ‘实验七’, ‘实验八’],[‘张燕’, ‘0121701100736’, ‘100’, ‘80’, ‘85’, ‘95’, ‘90’, ‘75’, ‘90’, ‘75’],[‘曹志’, ‘0121701100921’, ‘100’, ‘95’, ‘96’, ‘94’, ‘88’, ‘78’, ‘60’, ‘80’],[‘陈昊’, ‘0121701101125’, ‘99’, ‘99’, ‘97’, ‘93’, ‘70’, ‘80’, ‘90’, ‘80’],[‘张雯’, ‘0121701100931’, ‘96’, ‘93’, ‘83’, ‘88’, ‘86’, ‘78’, ‘30’, ‘83’],[‘朱宇’, ‘0121701100702’, ‘95’, ‘80’, ‘90’, ‘90’, ‘100’, ‘75’, ‘90’, ‘90’]]‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
示例 3 3‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
3‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
叶灿 86.0
朱宇 88.8
陈帆 80.6
示例 4 4 平均成绩: 87.9
中位数: 85.0
示例 5 5 请输入1-4中的一个数字
  1. with open("成绩统计.csv","rt",encoding="utf-8") as data:
  2. ls = [line.strip().split(',') for line in data]
  3. op=input()
  4. if op =='1':
  5. m=int(input())
  6. [print(','.join(ls[i])) for i in range(m)]
  7. elif op=='2':
  8. n=int(input())
  9. print([ls[0]] + sorted(ls[1:],key=lambda x:int(x[n+1]),reverse=True)[:5])
  10. elif op=='3':
  11. p=int(input())
  12. for i in range(1,p+1):
  13. print('{} {:.1f}'.format(ls[i][0],(sum([int(x) * 0.125 for x in ls[i][2:]]))))
  14. elif op=='4':
  15. lsall = [sum(map(int,x[2:])) * 0.125 for x in ls[1:]]
  16. lsall.sort()
  17. print("平均成绩: {:.1f}".format(sum(lsall)/len(lsall)))
  18. if len(lsall) % 2 == 0:
  19. m = (lsall[len(lsall)//2]+lsall[len(lsall)//2-1])/2
  20. else:
  21. m=lsall[len(lsall)//2]
  22. print("中位数: {:.1f}".format(m))
  23. else:
  24. print('请输入1-4中的一个数字') # 如果输入不在[1-4]的范围内,输出'请输入1-4中的一个数字'并结束程序