
本文旨在提供一个全面的Python教程,指导读者如何读取包含学生学号、平时成绩和期末成绩的文本文件,计算总评成绩,并将结果写入新文件。同时,文章还将演示如何统计各分数段的学生人数,并计算班级平均分,旨在帮助读者掌握Python文件读写、数据处理和统计分析的基本技能。
首先,我们需要从文本文件(例如 score1.txt)中读取数据。文件中的每一行代表一个学生的信息,包含学号、平时成绩和期末成绩,这些数据由空格分隔。
def read_data(filename):
"""
从文件中读取学生成绩数据。
Args:
filename (str): 文件名。
Returns:
list: 包含学生信息的列表,每个元素是一个字典,包含'学号'、'平时成绩'和'期末成绩'。
"""
students = []
with open(filename, 'r') as f:
for line in f:
# 使用split()方法,默认以空格分割
data = line.strip().split()
if len(data) == 3: # 确保每行数据完整
student = {
'学号': data[0],
'平时成绩': int(data[1]),
'期末成绩': int(data[2])
}
students.append(student)
return students代码解释:
注意事项:
立即学习“Python免费学习笔记(深入)”;
接下来,我们需要根据平时成绩和期末成绩的比例(40%和60%)计算总评成绩,并将学号和总评成绩写入另一个文件(例如 score2.txt)。
def calculate_and_write_scores(students, output_filename):
"""
计算总评成绩并将结果写入文件。
Args:
students (list): 包含学生信息的列表。
output_filename (str): 输出文件名。
"""
with open(output_filename, 'w') as f:
for student in students:
usual_score = student['平时成绩']
final_score = student['期末成绩']
total_score = round(0.4 * usual_score + 0.6 * final_score)
f.write(f"{student['学号']} {total_score}\n")代码解释:
现在,我们需要统计各分数段的学生人数,并计算班级平均分。
def analyze_scores(students):
"""
统计各分数段的学生人数并计算平均分。
Args:
students (list): 包含学生信息的列表。
Returns:
tuple: 包含各分数段人数的字典和平均分。
"""
grade_brackets = {
'90以上': 0,
'80-89': 0,
'70-79': 0,
'60-69': 0,
'60以下': 0
}
total_score_sum = 0
num_students = len(students)
for student in students:
usual_score = student['平时成绩']
final_score = student['期末成绩']
total_score = round(0.4 * usual_score + 0.6 * final_score)
total_score_sum += total_score
if total_score >= 90:
grade_brackets['90以上'] += 1
elif 80 <= total_score <= 89:
grade_brackets['80-89'] += 1
elif 70 <= total_score <= 79:
grade_brackets['70-79'] += 1
elif 60 <= total_score <= 69:
grade_brackets['60-69'] += 1
else:
grade_brackets['60以下'] += 1
average_score = total_score_sum / num_students if num_students > 0 else 0
return grade_brackets, average_score
代码解释:
最后,我们将所有函数组合在一起,完成整个程序。
if __name__ == "__main__":
input_filename = "score1.txt"
output_filename = "score2.txt"
students = read_data(input_filename)
calculate_and_write_scores(students, output_filename)
grade_brackets, average_score = analyze_scores(students)
print(f"班级总人数: {len(students)}")
print("各分数段人数:", grade_brackets)
print(f"班级平均分: {average_score:.1f}")代码解释:
完整代码示例:
def read_data(filename):
students = []
with open(filename, 'r') as f:
for line in f:
data = line.strip().split()
if len(data) == 3:
student = {
'学号': data[0],
'平时成绩': int(data[1]),
'期末成绩': int(data[2])
}
students.append(student)
return students
def calculate_and_write_scores(students, output_filename):
with open(output_filename, 'w') as f:
for student in students:
usual_score = student['平时成绩']
final_score = student['期末成绩']
total_score = round(0.4 * usual_score + 0.6 * final_score)
f.write(f"{student['学号']} {total_score}\n")
def analyze_scores(students):
grade_brackets = {
'90以上': 0,
'80-89': 0,
'70-79': 0,
'60-69': 0,
'60以下': 0
}
total_score_sum = 0
num_students = len(students)
for student in students:
usual_score = student['平时成绩']
final_score = student['期末成绩']
total_score = round(0.4 * usual_score + 0.6 * final_score)
total_score_sum += total_score
if total_score >= 90:
grade_brackets['90以上'] += 1
elif 80 <= total_score <= 89:
grade_brackets['80-89'] += 1
elif 70 <= total_score <= 79:
grade_brackets['70-79'] += 1
elif 60 <= total_score <= 69:
grade_brackets['60-69'] += 1
else:
grade_brackets['60以下'] += 1
average_score = total_score_sum / num_students if num_students > 0 else 0
return grade_brackets, average_score
if __name__ == "__main__":
input_filename = "score1.txt"
output_filename = "score2.txt"
students = read_data(input_filename)
calculate_and_write_scores(students, output_filename)
grade_brackets, average_score = analyze_scores(students)
print(f"班级总人数: {len(students)}")
print("各分数段人数:", grade_brackets)
print(f"班级平均分: {average_score:.1f}")总结:
本文提供了一个完整的Python程序,用于处理学生成绩数据。通过学习本文,读者可以掌握Python文件读写、数据处理和统计分析的基本技能。同时,本文还提供了一些注意事项和最佳实践,帮助读者编写更健壮和可维护的代码。希望这个教程能帮助你更好地理解和应用Python!
以上就是Python处理学生成绩:从原始数据到统计分析的完整指南的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号