写点什么

每日一题——PAT 乙级 1004 成绩排名 python

作者:武师叔
  • 2022 年 5 月 05 日
  • 本文字数:956 字

    阅读完需:约 3 分钟

每日一题——PAT乙级1004 成绩排名 python

PAT (Basic Level) Practice (中文)


1004 成绩排名 (20 分)


读入 n(>0)名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号。

输入格式:

每个测试输入包含 1 个测试用例,格式为


第 1 行:正整数 n第 2 行:第 1 个学生的姓名 学号 成绩第 3 行:第 2 个学生的姓名 学号 成绩  ... ... ...第 n+1 行:第 n 个学生的姓名 学号 成绩
复制代码


其中姓名学号均为不超过 10 个字符的字符串,成绩为 0 到 100 之间的一个整数,这里保证在一组测试用例中没有两个学生的成绩是相同的。

输出格式:

对每个测试用例输出 2 行,第 1 行是成绩最高学生的姓名和学号,第 2 行是成绩最低学生的姓名和学号,字符串间有 1 空格。

输入样例:

3Joe Math990112 89Mike CS991301 100Mary EE990830 95
复制代码

输出样例:

Mike CS991301Joe Math990112
复制代码


思路展现:


依次输入每个学生的信息


将输入的学生信息按空格进行分割并加入到列表中


对学生信息列表进行排序,按第三列进行正序排序


数据处理,找出最大值和最小值及其他们的下标


打印最大值的信息


打印最小值的信息


代码实现(方法一):


n=int(input())#用来存所有的学生信息stu_infos=[] for i in range(n):    #依次输入每个学生的信息    student_info=input()    #将输入的学生信息按空格进行分割并加入到列表中    stu_infos.append(student_info.split(' ')) #对学生信息列表进行排序,按第三列进行正序排序result=sorted(stu_infos,key=lambda x:int(x[2]),reverse=True) print(result[0][0]+' '+result[0][1])print(result[-1][0]+' '+result[-1][1])
复制代码


代码实现(方法二):


student=[]max_score=0max_index=0min_index=0min_score=100for i in range(n) :    name,xuehao,score=input().split()#并行输入    student.extend([name,xuehao,int(score)])#将一次输入的数据添加到列表里    for i in range(2,len(student),3) :#数据处理,找出最大值和最小值及其他们的下标    if student[i] > max_score :        max_score=student[i]        max_index=i     if student[i] < min_score :        min_score=student[i]        min_index=i print(student[max_index-2],student[max_index-1])#打印最大值的信息print(student[min_index-2],student[min_index-1])#打印最小值的信息
复制代码


用户头像

武师叔

关注

每天丰富自己,去过自己想要的生活! 2022.04.28 加入

一个喜欢最新技术,研发的人工智能专业的大二学生,用自己的代码做一些有意义的事情! 目前大二结束有去大厂研发岗实习的计划,每天丰富自己的技术,去过自己想要的实习生活。

评论

发布
暂无评论
每日一题——PAT乙级1004 成绩排名 python_武师叔_InfoQ写作社区