解题思路:

    1.数据输入:

    通过input()函数获取输入的整数N,表示学生人数。

使用for循环迭代N次,每次输入一个学生的信息,包括学号(num)、姓名(name)、语文成绩(score_Chi)、数学成绩(score_Math)、英语成绩(score_Eng)。

    2.数据存储:

将每个学生的信息存储为字典,并添加到名为data的列表中。

    3.计算平均分:

    使用列表推导式和sum()函数计算语文、数学、英语的平均分,并将结果转为整数。

    存储在score_Chi_Ave、score_Math_Ave和score_Eng_Ave中。

    4.计算最高分:

    使用列表推导式和max()函数计算每个学生的总分,找到最高分并存储在score_Max中。

    5.找到最高分学生:

    使用enumerate()函数获取每个学生总分的索引和值。

    使用max()函数和key参数找到最高分的学生的索引。

    6.输出结果:

    打印平均分和最高分学生的学号、姓名、语文、数学、英语成绩。

注意事项:

    数据输入时,确保输入的数字N和每个学生的信息格式正确,否则可能导致程序错误。

    确保数据存储的格式正确,以便后续的计算和输出。

    考虑异常情况,例如除数为零的情况。如果N为零,可能导致除法错误。

    可以考虑对代码进行函数化,使其更易读和维护。例如,将计算平均分和最高分的部分封装成函数。


参考代码:

data = []
N = int(input())
for i in range(N):
    num, name, score_Chi, score_Math, score_Eng = input().split()
    data.append({
        "num": num,
        "name": name,
        "score_Chi": int(score_Chi),
        "score_Math": int(score_Math),
        "score_Eng": int(score_Eng)
    })

score_Chi_Ave = int(sum([d["score_Chi"] for d in data]) / N)
score_Math_Ave = int(sum([d["score_Math"] for d in data]) / N)
score_Eng_Ave = int(sum([d["score_Eng"] for d in data]) / N)
score_Max = max([d["score_Chi"] + d["score_Math"] + d["score_Eng"] for d in data])
Topstudent_index, _ = max(enumerate([d["score_Chi"] + d["score_Math"] + d["score_Eng"] for d in data]), key=lambda x: x[1])
print(score_Chi_Ave, score_Math_Ave, score_Eng_Ave)
print(data[Topstudent_index]["num"],
      data[Topstudent_index]["name"],
      data[Topstudent_index]["score_Chi"],
      data[Topstudent_index]["score_Math"],
      data[Topstudent_index]["score_Eng"])


点赞(0)
 

0.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论