‘’’
文件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 data
def 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=0
stu_score=0
for 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()