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

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

题目

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

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

示例

输入:
3
Joe Math990112 89
Mike CS991301 100
Mary EE990830 95

输出:
Mike CS991301
Joe Math990112

思路

难度简单

思路简单,代码逻辑复杂。

解题流程

  • 查到有几个学生(准备循环比较)

  • 定义一个student列表,用于承装数据(成绩int()函数,其他字符串)

  • 通过循环来比较大小,找到所在student的位置,用于推算出最值学生的学号和姓名位置

代码展示

Python3

n = int(input())  
#查到学生的人数  int()取整形
student = []   
#定义一个列表
max_grade = 0
max_index = 0
min_grade = 100
min_index = 0   
#设置最大最小的成绩和最大最小那个学生的学号
#这里的思想是通过循环比最大和最小(所以最大开始是0最小开始是100))
for i in range(n):    
#有几个学生循环几次
    name, id, grade = input().split(" ")  
    #用什么把把数值分来
    student.extend([name, id, int(grade)])  
    # grade是str(),比较数值int() ,
    # 列表 extend() 方法通过在列表末尾追加可迭代对象中的元素来扩展列表。 -- 可迭串代对象(字符、列表、元祖、字典)。
    #print(student)  #为了让extend()函数插入student列表更加直观(题目提交不用提交print(student))
for i in range(2, len(student), 3):
    if student[i] > max_grade: 
    #循环找出最大的那个学生的【成绩】位置
        max_grade = student[i]
        max_index = i
    if student[i] < min_grade: 
    #循环找出最小的那个学生的【成绩】位置
        min_grade = student[i]
        min_index = i
print(student[max_index - 2], student[max_index - 1])
#最大的那个学生的【成绩】位置推算出那个学生的姓名和学号——的列表位置
print(student[min_index - 2], student[min_index - 1])
#最小的那个学生的【成绩】位置推算出那个学生的姓名和学号——的列表位置

"""
测试用例:(用于跑PyCharm)
3
Joe Math990112 89
Mike CS991301 100
Mary EE990830 95


"""
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

武师叔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值