‘’’
文件score.txt中存储了学生的考试信息,内容如下
小明,98,96
小刚,90,94
小红,90,94
小王,98,96
小刘,80,90
小赵,90,96
第二列是数学成绩,第三列是语文成绩
请写程序分析:
- 哪些同学语文成绩是相同的?
- 哪些同学数学成绩是相同的?
- 哪些同学语文和数学成绩都是相同的?
- 总分最高的同学是谁,分数是多少?
- 总分的平均分是多少?
def read_score(filename):# 打开文件f = open(filename, 'r', encoding='utf-8')# 读取文件内容data = f.readlines() # 一次读取所有行data = [i.strip().split(',') for i in data] # strip()去除字符串两端的空格和换行符f.close()return datadef analyse_score():# 获取数据datas = read_score('score2.txt')# # 获取语文成绩列表# chinese_scores = [int(score[2]) for score in data] #[96, 94, 94, 96, 90, 96]stu_lst=[]for data in datas:name=data[0]math=int(data[1])chinese=int(data[2])stu_lst.append({'name':name,'math':math,'chinese':chinese}) #得到一个字典math_dict={}chinese_dict={}ys_dict={}max_score=0stu_score=0for stu in stu_lst:name=stu['name']math=stu['math']chinese=stu['chinese']score_sum=math+chinese #获取每次语文加数学的分数stu_score+=score_sum #得到总分if score_sum>max_score:max_score=score_sum #计算总分最高chinese_dict.setdefault(chinese,[])chinese_dict[chinese].append(name) #把语文成绩相同的同学名字添加到列表中math_dict.setdefault(math,[])math_dict[math].append(name) #把数学成绩相同的同学名字添加到列表中ys_dict.setdefault((math,chinese),[])ys_dict[(math,chinese)].append(name) #把语文和数学成绩相同的同学名字添加到列表中for k,v in chinese_dict.items():if len(v)>1:print(f'语文成绩相同的同学有:{v},他们的语文成绩是{k}')print('*'*20)for k,v in math_dict.items():if len(v)>1:print(f'数学成绩相同的同学有:{v},他们的数学成绩是{k}')print('*' * 20)for score,name_lst in ys_dict.items():sum_score=sum(score)if sum_score==max_score:print(f'总分最高的同学是:{name_lst},他们的总分是{max_score}')if len(name_lst)>1:print(f'语文和数学成绩相同的同学有:{name_lst},他们的总分是{max_score}')print(f'总分平均分是:{stu_score / len(stu_lst):.2f}')if __name__ == '__main__':analyse_score()