题目要求: 计算student_grade.txt 中 语文成绩的平均值, 找出数学成绩最高的学生是谁
方法一:
# 读取原始文件并以行分隔 with open('student_grade.txt',mode='r', encoding='utf-8' ) as f: data = f.readlines() # 以行的方式, 读文件 # 生成空列表, 并将每一行作为一个字符串放进列表中 K = [] for i in data: # i 是一个字符串 '姓名\t语文\t数学\t英语\t总分\t班名次\n' split_t = i.split('') K.append(split_t) K # 求数学成绩的最高值 for i in K[1:]: L.append(int(i[2])) max(L) # 求语文成绩的平均值 n = 0 for i in K[1:]: n += int(i[1]) # 语文成绩了 mean_yuwen = n/(len(K)-1) # 所有人的语文成绩相加之和(n) / 人数 () print(mean_yuwen)
方法二:
with open('student_grade.txt', 'r', encoding='utf-8') as f: data = f.read() data_lines = data.splitlines() empty = {} for i in data_lines: data_list = i.split('\t') empty[data_list[0]] = data_list[1:] empty.pop('姓名') j=[] for i in list(empty.values()) : j.append(i[1]) j=[int(t) for t in j] j.sort() f=str(j[-1])#找到最高的数学成绩 f for k ,v in empty.items(): if v[1]==f: print(k)
方法三:
with open('student_grade.txt', 'r', encoding='utf-8') as f: data = f.read() #读取student_grade.txt的内容给data(文本) data_lines=data.splitlines() #把文本转换成列表,同时去掉换行 empty={} #定义一个空字典 for i in data_lines: data_list=i.split('\t') empty[data_list[0]]=data_list[1:] #遍历列表data_lines中的每个元素,去掉'\t'后生成姓名和成绩对应的字典. empty.pop('姓名') #弹出标题行 shuxue=0 yuwen=0 for k,v in empty.items(): yuwen=yuwen+int(v[0]) #遍历字典,求语文成绩的总和 if int(v[1])>shuxue: shuxue=int(v[1]) #遍历字典empty,求出最高的数学成绩 name=k print(name+'同学的数学成绩最高,为%d分.'%shuxue,'\n','语文成绩的平均值为%d分.'%(yuwen/len(empty)))