6-2 按等级统计学生成绩pta
时间: 2025-06-30 11:53:14 浏览: 24
为了按等级统计学生成绩,可以采用编程的方式处理成绩数据。下面提供一种可能的Python实现方案来完成这个任务。
创建一个程序以读取学生的名字和分数,并将其保存在一个文本文件`score.txt`中。之后从该文件读取数据计算每位学生的平均分、最高分、最低分等统计数据,并根据预设的成绩区间分配相应的字母等级(例如A, B, C, D, F)。这里是一个简单的例子:
```python
def save_scores_to_file(scores_dict, filename='score.txt'):
with open(filename, 'w') as file:
for name, score in scores_dict.items():
file.write(f"{name},{score}\n")
def read_scores_from_file(filename='score.txt'):
try:
with open(filename, 'r') as file:
lines = file.readlines()
return {line.split(',')[0]: float(line.split(',')[1]) for line in lines}
except FileNotFoundError:
print("File not found.")
return {}
def calculate_statistics(scores):
if len(scores) == 0:
return None
avg_score = sum(scores.values()) / len(scores)
max_score = max(scores.values())
min_score = min(scores.values())
# Assuming the grading scale is A >=90 > B >=80 > C >=70 > D >=60 > F
def get_grade(score):
if score >= 90:
return "A"
elif score >= 80:
return "B"
elif score >= 70:
return "C"
elif score >= 60:
return "D"
else:
return "F"
grades = {}
for student, score in scores.items():
grade = get_grade(score)
if grade not in grades:
grades[grade] = []
grades[grade].append(student)
return {
'average': avg_score,
'max': {'student': list(filter(lambda x: scores[x]==max_score, scores)), 'score': max_score},
'min': {'student': list(filter(lambda x: scores[x]==min_score, scores)), 'score': min_score},
'grades_distribution': grades
}
# Example usage:
scores_data = {"Alice": 88.5, "Bob": 92.3, "Charlie": 74.2} # Sample data to be saved into a file.
save_scores_to_file(scores_data)
read_data = read_scores_from_file()
stats = calculate_statistics(read_data)
if stats:
print(f"Average Score: {stats['average']}")
print(f"Highest Score(s): {', '.join(stats['max']['student'])}, Score: {stats['max']['score']}")
print(f"Lowest Score(s): {', '.join(stats['min']['student'])}, Score: {stats['min']['score']}")
print("\nGrade Distribution:")
for grade, students in sorted(stats['grades_distribution'].items()):
print(f"Grade {grade}: {students}")
```
这段代码实现了如下功能:
- `save_scores_to_file`: 将给定的学生姓名及其对应的分数字典写入指定的文本文件。
- `read_scores_from_file`: 从指定的文本文件中读取学生姓名及其对应分数的数据,并返回一个字典形式的结果。
- `calculate_statistics`: 对提供的分数列表执行基本统计运算,包括计算平均值、最大最小值以及根据特定评分标准划分等级分布情况。
阅读全文
相关推荐
















