关于#数据文件#的问题,如何解决?

写一个程序能够把从键盘输入的学生成绩进行简单的总评计算后写入某个文件中,也能从已知的数据文件中,加载学生成绩进行简单的总评计算,再写到文件中。假设学生成绩数据包括学号、姓名、平时成绩、期中成绩和漆膜成绩。

以下是一个简单的 Python 程序,可以从键盘输入学生成绩并将其写入数据文件中。程序还可以从数据文件中读取学生成绩并计算平均总评成绩。

import json

def calculate_total_grade(scores):
    """
    计算学生成绩的总评分数
    """
    total = scores['attendance'] * 0.1 + scores['homework'] * 0.2 + \
            scores['midterm'] * 0.3 + scores['final'] * 0.4
    return round(total, 1)

def save_scores_to_file(scores_list, filename):
    """
    将学生成绩列表保存到文件中
    """
    with open(filename, 'w') as f:
        json.dump(scores_list, f)

def load_scores_from_file(filename):
    """
    从文件中加载学生成绩列表
    """
    with open(filename, 'r') as f:
        scores_list = json.load(f)
    return scores_list

# 从键盘输入学生成绩
scores_list = []
while True:
    sid = input("请输入学号(输入 q 结束):")
    if sid == 'q':
        break
    name = input("请输入姓名:")
    attendance = float(input("请输入出勤成绩:"))
    homework = float(input("请输入作业成绩:"))
    midterm = float(input("请输入期中成绩:"))
    final = float(input("请输入期末成绩:"))
    scores = {'id': sid, 'name': name, 'attendance': attendance,
              'homework': homework, 'midterm': midterm, 'final': final}
    total_grade = calculate_total_grade(scores)
    scores['total'] = total_grade
    scores_list.append(scores)

# 保存学生成绩列表到文件中
filename = 'scores.json'
save_scores_to_file(scores_list, filename)

# 从文件中加载学生成绩并计算平均总评成绩
scores_list = load_scores_from_file(filename)
total_grade_sum = 0
for scores in scores_list:
    total_grade_sum += scores['total']

if len(scores_list) > 0:
    average_total_grade = total_grade_sum / len(scores_list)
else:
    average_total_grade = 0

print("平均总评成绩为:{:.1f}".format(average_total_grade))
在这个程序中,calculate_total_grade 函数计算一个学生的总评成绩,save_scores_to_file 函数将学生成绩列表保存到文件中,load_scores_from_file 函数从文件中加载学生成绩列表。最后,程序从键盘输入学生成绩并保存到数据文件中,然后再从数据文件中加载学生成绩并计算平均总评成绩。