Python进行文本数据处理(成绩处理)

编程练习:文本数据处理
1、读取记录某班三十名同学五门课程成绩(百分制整数)的文本文件,具体数据自己输入或利用随机数产生。
2、对每门课程进行统计分析,计算最高分、最低分、平均分以及标准差,计算优秀、良好、中等、及格和不及格人数以及百分比,在解释器窗口打印输出。
3、将分析结果保存到某文本文件。

成绩单截图如下:

f=open("my_grades.txt",'r',encoding='utf-8')
#读取成绩
grades=f.readlines()


name=[]
total_grades=[]
average_grades=[]
#subject=grades[0]

#各科科目
chinese=[]
math=[]
english=[]
wuli=[]
huaxue=[]

#等级个数初始化
youxiu=[0,0,0,0,0]
lianghao=[0,0,0,0,0]
zhongdeng=[0,0,0,0,0]
jige=[0,0,0,0,0]
bujige=[0,0,0,0,0]

#计算每科成绩
for i in range(1,len(grades)):
    list1=grades[i].split(" ")
    
    chinese.append(int(list1[1]))
    math.append(int(list1[2]))
    english.append(int(list1[3]))
    wuli.append(int(list1[4]))
    huaxue.append(int(list1[5]))

    for j in range(1,6):
        a=int(list1[j])
        if a>=90:
            youxiu[j-1]+=1
        elif a>=80:
            lianghao[j-1]+=1
        elif a>=70:
            zhongdeng[j-1]+=1
        elif a>=60:
            jige[j-1]+=1
        else:
            bujige[j-1]+=1

f.close()

print("科目 语文 数学 英语 物理 化学")
print("最大值",end=" ")
print(max(chinese),max(math),max(english),max(wuli),max(huaxue))
print("最小值",end=" ")
print(min(chinese),min(math),min(english),min(wuli),min(huaxue))
print("平均值",end=" ")
print(sum(chinese)/30,sum(math)/30,sum(english)/30,sum(wuli)/30,sum(huaxue)/30)
S1=[0,0,0,0,0]

#计算标准差
for i in range(30):
    b=0
    b+=(chinese[i]-(sum(chinese)/30))**2
S1[0]=(b/30)**0.5
for i in range(30):
    b=0
    b+=(math[i]-(sum(math)/30))**2
S1[1]=(b/30)**0.5
for i in range(30):
    b=0
    b+=(english[i]-(sum(english)/30))**2
S1[2]=(b/30)**0.5
for i in range(30):
    b=0
    b+=(wuli[i]-(sum(wuli)/30))**2
S1[3]=(b/30)**0.5
for i in range(30):
    b=0
    b+=(huaxue[i]-(sum(huaxue)/30))**2
S1[4]=(b/30)**0.5
print("标准差",end=" ")
for i in range(5):
    print(S1[i],end=" ")
print("")
print("各科优秀人数",end=" ")
for i in range(5):
    print(youxiu[i],end=" ")
    print("{:.2%}".format(youxiu[i]/30),end=" ")
print("")
print("各科良好人数",end=" ")
for i in range(5):
    print(lianghao[i],end=" ")
    print("{:.2%}".format(lianghao[i]/30),end=" ")
print("")
print("各科中等人数",end=" ")
for i in range(5):
    print(zhongdeng[i],end=" ")
    print("{:.2%}".format(zhongdeng[i]/30),end=" ")
print("")
print("各科及格人数",end=" ")
for i in range(5):
    print(jige[i],end=" ")
    print("{:.2%}".format(jige[i]/30),end=" ")
print("")
print("各科不及格人数",end=" ")
for i in range(5):
    print(bujige[i],end=" ")
    print("{:.2%}".format(bujige[i]/30),end=" ")
print("")

#写入文件
f1=open("grades_jieguo.txt","w")
f1.write("科目 语文 数学 英语 物理 化学\n")

f1.write("最大值 ")
f1.write(str(max(chinese))+" "+str(max(math))+" "+str(max(english))+" "+str(max(wuli))+" "+str(max(huaxue)))
f1.write("\n")
f1.write("最小值 ")
f1.write(str(min(chinese))+" "+str(min(math))+" "+str(min(english))+" "+str(min(wuli))+" "+str(min(huaxue)))
f1.write("\n")
f1.write("平均值 ")
f1.write(str(sum(chinese)/30)+" "+str(sum(math)/30)+" "+str(sum(english)/30)+" "+str(sum(wuli)/30)+" "+str(sum(huaxue)/30))
f1.write("\n")
f1.write("标准差 ")
f1.write(str(S1[0])+" "+str(S1[1])+" "+str(S1[2])+" "+str(S1[3])+" "+str(S1[4])+" ")
f1.write("\n")

f1.write("各科优秀人数 ")
for i in range(5):
    f1.write(str(youxiu[i])+" ")
    f1.write(str(int(youxiu[i]/30*100))+"%")
f1.write("\n")
f1.write("各科良好人数 ")
for i in range(5):
    f1.write(str(lianghao[i])+" ")
    f1.write(str(int(lianghao[i]/30*100))+"%")
f1.write("\n")
f1.write("各科中等人数 ")
for i in range(5):
    f1.write(str(zhongdeng[i])+" ")
    f1.write(str(int(zhongdeng[i]/30*100))+"%")
f1.write("\n")
f1.write("各科及格人数 ")
for i in range(5):
    f1.write(str(jige[i])+" ")
    f1.write(str(int(jige[i]/30*100))+"%")
f1.write("\n")
f1.write("各科不及格人数 ")
for i in range(5):
    f1.write(str(bujige[i])+" ")
    f1.write(str(int(bujige[i]/30*100))+"%")
f1.write("\n")
f1.close()

最终的打印结果为 

输出的成绩结果统计结果为

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值