**
一.题目内容**
**
二.题目分析**
本问题分为两个部分。
1.输入数据处理
2.进行数据排序,找到最大最小值
第一个部分,本来采用的是空格判定方法,但是并不理想,似乎无法判定,折腾了一番后变放弃了。
for i in range(int(number)):
single=input()
for p in single:
num,n=1,2
while n>0:
if p=='':
num+=1
n-=1
else:
num+=1
number-=1
于是改为使用split函数。这是举出split函数使用的一个例子。input().split(‘’,0)。括号前半部分对应以什么符号为标志划分,后半部分数字代表划分几段,一段对应-1,二段对应零。
names,grades=[],[]
number=input()
while int(number)>0:
text=input().split()
name=text[0]+text[1]
grade=text[2]
grades.append(str(grade))
names.append(name)
number=int(number)
number -= 1
第二部分,***进行排序找最大最小。有列表遍历排序法,字典对应寻找法。***代码分别为
good,bad=-10000,10000
max,min=0,0
for i in range(len(grades)):
if int(grades[i])>good:
good=int(grades[i])
max=i
if int(grades[i])< bad:
bad=int(grades[i])
min=i
good,bad=-1000,1000
for i in range(number):
if int(grades[i])>good:
good=int(grades[i])
if int(grades[i])< bad:
bad=int(grades[i])
good=str(good)
bad=str(bad)
max=message[good]
min=message[bad]
三.未解思路
问如何对字典进行键或值排序,代码如下
message={}
grades=[]
number=input()
number=int(number)
for i in range(number):
text=input().split()
name=text[0]+text[1]
grade=text[2]
grades.append(grade)
message[grade]=name
number=int(number)
good,bad=-1000,1000
for i in range(number):
if int(grades[i])>good:
good=int(grades[i])
if int(grades[i])< bad:
bad=int(grades[i])
good=str(good)
bad=str(bad)
max=message[good]
min=message[bad]
print(max)
print(min)
21.3.4更新版
number=int(input())
text0=[]
for p in range(number):
text=input().split()
text[-1]=int(text[-1])
text0.append(text)
text0=sorted(text0,key=lambda x:x[-1],reverse=True)
if number>1:
text0[0].pop()
text0[-1].pop()
else:
text0[0].pop()
print(' '.join(text0[0]))
print(' '.join(text0[0]))
知识点1.数字字符串首字母开始比较起2.列表内元素格式不必统一3.extend,相加只接受一个列表,append可接受多个列表4.sort文本在前,reverse永远在最后5,text.pop(索引,无索引默认最后一个)/del(text[i])/remove(具体元素)
第二次修改版
number=int(input())
text0=[input().split() for p in range(number)]
text0=sorted(text0,key=lambda x:int(x[-1]),reverse=True)
print(' '.join(text0[0][0:2])+'\n'+' '.join(text0[-1][0:2]))