按院系计算平均成绩

所属作业: hw8 数据结构: 字典, 字符串 算法: 排序

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# 创建一个字典来存储院系编号及其对应的成绩列表
scores_by_academic = {}

while True:
    # 读取输入
    s = input()
    
    # 如果输入是 "quit" 或 "QUIT",则结束循环
    if s.lower() == "quit":
        break
    
    # 将输入的字符串按逗号分割成学号和成绩
    id, score = s.split(",")
    
    # 提取学号中的院系编号(第6和第7位)
    academic = id[5:7]
    
    # 如果院系编号不在字典中,则初始化一个空列表
    if academic not in scores_by_academic:
        scores_by_academic[academic] = []
    
    # 将成绩转换为浮点数并添加到对应院系的成绩列表中
    scores_by_academic[academic].append(float(score))

# 创建一个列表来存储每个院系的平均成绩
average_scores = []

# 遍历字典中的每个院系
for academic, scores in scores_by_academic.items():
    # 计算平均成绩,并使用 round() 函数保留一位小数
    average_score = round(sum(scores) / len(scores), 1)
    average_scores.append((academic, average_score))

# 按照平均成绩降序排序
average_scores.sort(key=lambda x: -x[1])

# 遍历排序后的平均成绩列表并输出结果
for academic, score in average_scores:
    print(f"{academic},{score}")