题目10、
考生工作盘下有一个mm.txt文件,里面存放着学生毕业设计的分数,编写程序文件cx10.py,统计学生毕业设计各等级的人数,具体要求如下:
1)定义一个函数fs(),该函数可以读取mm.txt文件里的学生分数,并实现分词存放到列表ls中。
2)定义一个函数dj(s),其中参数s 指代被统计的列表,该函数可以统计该班学生毕业设计的等级情况:评定设计(论文)总成绩分数,对应成绩等级为:优(90-100分)、良(80-89分)、中(70-79分)、及格(60-69分)、不及格(<60分)。并将统计结果放在字典d中。
3)利用上面两个函数,读出文件mm.txt中的分数,将这些分数按等级进行人数统计,统计结果按各等级人数降序的方式进行输出,运行结果如下图所示:
def fs():
x=open("data.txt").read()#read 函数从打开的文件中读取数据
ls=list(map(int,x.split(",")))#以,分割数据并转换为整型数字储存在列表中
return ls#返回列表
def dj(s):
d={}#空字典
for i in s:
if i>= 90:
d['优秀']=d.get('优秀',0)+1
elif i>= 80:
d['良好']=d.get('良好',0)+1
elif i>= 70:
d['中等']=d.get('中等',0)+1
elif i>= 60:
d['及格']=d.get('及格',0)+1
else:
d['不及格']=d.get('不及格',0)+1
return d
score = fs()
print("学生分数:",end="")#不分行
for i in score:
print(i,end=" ")#数值间以空格分隔
dic=dj(score)#统计分数每等级人数,放入字典
counts=list(dic.items())#返回可遍历的(键, 值) 元组数组,转换为列表
counts.sort(key=lambda x:x[1],reverse=True)#以等级人数从大到小排序,分类
print("\n分等级统计结果排序:")#换行
for i in counts:
print("{}:{}人".format(i[0],i[1]))