python PAT 1004

在c语言和c++等语言里面,有结构体类型的数据,这个题目用结构体来处理比较方便.类比到python里面,就是List类型的数据,但是对于List数据内置的排序算法,基本上都是对一个List里面的各元素进行排序,所以这个题目采用List做的话,就需要把姓名通过某种方式重组成一个list,学号也是这样,单独一个List,成绩分数一个List,然后对成绩这个list进行排序也可以,这里采用了内置的最大值最小值函数可以直接求出来。

n=input()  #从键盘接收输入学生信息的个数
name=[]    #List类型,姓名
number=[]  #list类型,学号
score=[]   # list类型,分数

while n!=0:
      s=input()
      name.append(s.split(' ')[0])  #把s这个List类型里面的下标为[0]的那一部分分离出来,追加到name
      number.append(s.split(' ')[1])#下标为1的那部分,分离出来,追加到number这个list后面
      score.append(int(s.split(' ')[2])) #类比上面,碰到空格分离,因为这一行输入的是数字,所以需要强制转换成整型
      n=int(n)-1

max_tag=score.index(max(score))   #用内置函数可以直接求出max
min_tag=score.index(min(score))   #用内置函数直接求出min
print(name[max_tag],number[max_tag]) #输出分数最大值对应的学生的名字和学号
print(name[min_tag],number[min_tag]) #输出分数最小值对应的学生的姓名和学号

注意事项:score.append(int(s.split(' ')[2])) #类比上面,碰到空格分离,因为这一行输入的是数字,所以需要强制转换成整型。这里还有一个问题,split(' ')里面写的是一个空格进行分割,在输入的时候,如果你输入的学生的姓名之后,跟的是大于一个空格,比如说两个空格,那么split()函数就会认为第一个空格时候分割点,所以name后面紧跟存储着的也是一个空格。

这一行分割,一定要有int的这个强制类型转换,要不然是不对的.同理,在想用n进行自减的情况下,对n也要进行强制类型转换,因为从键盘接收的输入,默认为str类型。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值