写一个程序能够把从键盘输入的学生成绩进行简单的总评计算后写入菜个文件中,也能从己知的数据文件中,加载学生成绩进行简单的总评计算,再写到文件中。假设学生成绩数据包括学号、姓名、平时成绩,期中成绩和期末成绩。
时间: 2024-03-25 11:41:49 浏览: 86
好的,这个问题涉及到文件操作和数据处理,我会尽力解答。以下是一个简单的 Python 程序,可以实现输入学生成绩并保存到文件中,也可以从文件中读取学生成绩并计算总评后再写入文件中。
``` python
# 定义一个函数,用于计算学生的总评成绩
def calculate_score(score_dict):
# 平时成绩占比 30%
daily_score = score_dict['daily'] * 0.3
# 期中成绩占比 30%
midterm_score = score_dict['midterm'] * 0.3
# 期末成绩占比 40%
final_score = score_dict['final'] * 0.4
# 计算总评成绩并返回
total_score = daily_score + midterm_score + final_score
return total_score
# 定义一个函数,用于输入学生成绩并保存到文件中
def save_score():
# 提示用户输入学生信息
student_id = input("请输入学号:")
student_name = input("请输入姓名:")
daily_score = float(input("请输入平时成绩:"))
midterm_score = float(input("请输入期中成绩:"))
final_score = float(input("请输入期末成绩:"))
# 构造一个字典保存学生信息和成绩
score_dict = {
'id': student_id,
'name': student_name,
'daily': daily_score,
'midterm': midterm_score,
'final': final_score
}
# 计算总评成绩
total_score = calculate_score(score_dict)
# 打开文件,将学生信息和成绩写入文件中
with open('score.txt', 'a') as f:
f.write(f"{student_id},{student_name},{daily_score},{midterm_score},{final_score},{total_score}\n")
print(f"学生 {student_name} 的成绩已保存。")
# 定义一个函数,用于从文件中读取学生成绩并计算总评后再写入文件中
def load_and_calculate_score():
# 打开文件,读取学生信息和成绩
with open('score.txt', 'r') as f:
lines = f.readlines()
# 遍历每一行,计算总评成绩并写入新文件中
with open('new_score.txt', 'w') as f:
for line in lines:
# 解析每一行的数据
fields = line.strip().split(',')
student_id = fields[0]
student_name = fields[1]
daily_score = float(fields[2])
midterm_score = float(fields[3])
final_score = float(fields[4])
# 构造一个字典保存学生信息和成绩
score_dict = {
'id': student_id,
'name': student_name,
'daily': daily_score,
'midterm': midterm_score,
'final': final_score
}
# 计算总评成绩
total_score = calculate_score(score_dict)
# 将学生信息和成绩写入新文件中
f.write(f"{student_id},{student_name},{daily_score},{midterm_score},{final_score},{total_score}\n")
print("学生成绩计算完毕,结果已保存到文件 new_score.txt 中。")
# 主程序入口
if __name__ == '__main__':
# 提示用户选择操作
print("请选择操作:")
print("1. 输入学生成绩并保存到文件中")
print("2. 从文件中加载学生成绩并计算总评后保存到新文件中")
choice = input("请选择操作(输入数字 1 或 2):")
if choice == '1':
save_score()
elif choice == '2':
load_and_calculate_score()
else:
print("无效的选择。")
```
上述代码包含三个函数:`calculate_score` 用于计算学生的总评成绩,`save_score` 用于输入学生成绩并保存到文件中,`load_and_calculate_score` 用于从文件中读取学生成绩并计算总评后再写入文件中。
在 `save_score` 函数中,程序会提示用户输入学生信息和成绩,构造一个字典保存这些数据,并计算总评成绩。然后打开文件,将学生信息和成绩写入文件中。
在 `load_and_calculate_score` 函数中,程序会打开文件,读取学生信息和成绩。然后遍历每一行,解析数据并计算总评成绩,将结果写入新文件中。
在主程序入口中,程序会提示用户选择操作,如果选择 1 则调用 `save_score` 函数,如果选择 2 则调用 `load_and_calculate_score` 函数。如果选择其他操作,程序会输出无效的选择提示。
请注意,这里使用了文件操作,需要保证程序运行时所在的目录下存在 `score.txt` 文件,如果文件不存在则会抛出异常。另外,程序会将结果写入 `new_score.txt` 文件中,如果该文件已存在则会覆盖原有内容。
阅读全文