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类型。

猜你喜欢

转载自blog.csdn.net/Saber_lyl/article/details/82180156
今日推荐