63 lines
2.0 KiB
Python
63 lines
2.0 KiB
Python
#student_scores
|
|
def read_scores(filename):
|
|
student_scores = {}
|
|
try:
|
|
file = open(filename, 'r',encoding='utf-8')
|
|
next(file) # 跳过第一行(标题行)
|
|
for line in file:
|
|
name, chinese, math, english = line.strip().split()
|
|
scores = [float(chinese), float(math), float(english)]
|
|
student_scores[name] = scores
|
|
return student_scores
|
|
except FileNotFoundError:
|
|
print(f"错误:文件'{filename}'不存在。")
|
|
return {} # 返回空字典
|
|
except ValueError:
|
|
print("文件格式错误,每行应该包含姓名和三门课程的成绩。")
|
|
return {} # 返回空字典
|
|
except Exception as e:
|
|
print(f"读取文件时发生错误:{e}")
|
|
return {} # 返回空字典
|
|
|
|
def calculate_averages(student_scores):
|
|
averages = {}
|
|
for name, scores in student_scores.items():
|
|
averages[name] = sum(scores) / len(scores)
|
|
return averages
|
|
|
|
def write_averages_to_file(filename, averages):
|
|
try:
|
|
file=open(filename, 'w')
|
|
file.write("姓名 平均成绩\n")
|
|
for name, average in averages.items():
|
|
file.write(f"{name} {average:.2f}\n")
|
|
except Exception as e:
|
|
print(f"写入文件时发生错误:{e}")
|
|
|
|
|
|
# 主程序
|
|
scores_filename = 'student_scores.txt'
|
|
averages_filename = 'student_averages.txt'
|
|
|
|
# 读取成绩
|
|
student_scores = read_scores(scores_filename)
|
|
|
|
# 如果 student_scores 是空字典,则不进行后续操作
|
|
if student_scores:
|
|
# 计算平均成绩
|
|
averages = calculate_averages(student_scores)
|
|
|
|
# 将平均成绩写入文件
|
|
write_averages_to_file(averages_filename, averages)
|
|
else:
|
|
print("没有数据可用于计算平均成绩。")
|
|
|
|
|
|
fo=open('student_scores.txt','r',encoding='UTF-8')
|
|
fo_line=fo.readlines()
|
|
infor={}
|
|
for i in range(1,len(fo_line)):
|
|
name,C,M,E=fo_line[i].strip().split(' ')
|
|
print(name,C,M,E)
|
|
infor[name]=(float(C),float(M),float(E))
|
|
print(infor) |