Python 课程成绩分析

Posted ddl是第一生产力

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 课程成绩分析相关的知识,希望对你有一定的参考价值。

 

 

 第一件事当然是生成学生的分数,这里我是自己随机生成的,直接看代码,注释都写得很详细了

 1 import random
 2 import json
 3 
 4 
 5 def random_score(sum, bottom, top):
 6     \'\'\'
 7     :param sum: 生成随机数总数
 8     :param bottom: 随机数下界
 9     :param top: 随机数上街
10     :return: score_list 随机数列表
11     \'\'\'
12     score_list = []
13     for i in range(sum):
14         #   用random库的randint生成伪随机整数
15         random_number = random.randint(bottom, top)
16         score_list.append(random_number)
17 
18     return score_list
19 
20 
21 def write_file(filename, tmp_list):
22     \'\'\'
23     :param filename: 写入文件名
24     :param tmp_list: 传入写文件内容
25     :return:
26     \'\'\'
27     with open(filename, \'w\') as f:
28         #   json.dump()可以用来编码JSON数据,并写入文件流
29         json.dump(tmp_list, f)
30 
31 
32 def main():
33     #   主函数
34     score_list = random_score(40, 50, 100)
35     filename = \'students_score\'
36     write_file(filename, score_list)
37 
38 
39 if __name__ == \'__main__\':
40     main()

 

第二步就是各种计算啦,注释写的很全同样不解析了


 1 import json
 2 import math
 3 import numpy
 4 
 5 
 6 def read_file(filename):
 7     """
 8     :param filename: 读取文件名
 9     :return:
10     """
11 
12     with open(filename, \'r\') as f:
13         #   json.load可以将json文件解码成对应的数据类型
14         score_list = json.load(f)
15         return score_list
16 
17 
18 def cal_score(score_list):
19     """
20 
21     :param score_list: 学生全部分数
22     :return:
23     """
24 
25     #   列表本身就有找到最大最小值的函数
26     max_score = max(score_list)
27     min_score = min(score_list)
28 
29     #   用math的fsum()求总和再求平均值,朴实的方法
30     average_score = math.fsum(score_list) / len(score_list)
31     #   average_score = numpy.mean(score_list)  也可以,一步到位
32 
33     #   偷懒使用了numpy的求中位数的函数,普通方法是找到列表最中间的或中间两位求平均值
34     middle_score = numpy.median(score_list)
35 
36     #   这里我用了列表解析的方法来找到每个满足条件的分数
37     fail = [score for score in score_list if score < 60]
38     d_class = [score for score in score_list if 60 <= score < 70]
39     c_class = [score for score in score_list if 70 <= score < 80]
40     b_class = [score for score in score_list if 80 <= score < 90]
41     a_class = [score for score in score_list if 90 <= score < 100]
42 
43     #   numpy.std()对列表内所有数求标准差
44     standard_deviation = numpy.std(score_list)
45     #   这里标准差位数太长,使用round()控制一下精度,第一个参数为传入长尾数的数,第二个参数为控制小数的精度
46     ctl_st_dev = round(float(standard_deviation), 2)
47 
48     print("本次测试分数情况如下:")
49     #   format()标准化输出
50     print("平均分:{},最高分:{},最低分:{},成绩中位数:{},成绩标准差:{}(保留两位小数)".format(average_score,
51                                                                   max_score, min_score, middle_score, ctl_st_dev))
52     print("各分数段人数如下:")
53     print("不及格人数:{}人,60-70分之间:{}人,70-80分之间:{}人,80-90分之间:{}人"
54           ",90-100分:{}人".format(fail, len(d_class), len(c_class), len(b_class), len(a_class)))
55 
56 
57 def main():
58     score_list = read_file(\'students_score\')
59     cal_score(score_list)
60 
61 
62 if __name__ == \'__main__\':
63     main()

 

 

 

以上是关于Python 课程成绩分析的主要内容,如果未能解决你的问题,请参考以下文章

Python课程设计:学生成绩管理系统(附源代码)

Python 创建一个程序来执行和分析课程中的最终成绩

Java课程设计—学生成绩分析系统

[课程设计] 学生成绩管理系统(Python版)

1.文献研读---基于行为分析的在线课程成绩预测模型-任占广.尚福华

细节拉满Hadoop课程设计项目,使用idea编写基于MapReduce的学生成绩分析系统(附带源码项目文件下载地址)