Initial commit: Python learning project with examples and exercises
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
#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)
|
||||
Reference in New Issue
Block a user