成绩排序(Python)
成绩排序
http://www.nowcoder.com/questionTerminal/8e400fd9905747e4acc2aeed7240978b
成绩排序
注意点:
- 把下面的列表换成字典有可能过不了,因为有可能存在重名的同学;
- 如果想要更快,可以在 while 的时候使用插入排序;
- 这题我调了好久,就是因为一开始想省事直接用成绩的字符串排的。学的时候看到的例子都是 '8' > '3' 这种,弄得我以为数字字符串排序和数字一样,结果今天遇到了 '8' > '78',明明觉得我逻辑无懈可击但我还是反复查逻辑和语法调了我几个小时,最后突然灵感一来才发现是这的问题,淦。
while True: try: num = int(input()) mode = int(input()) ls = [] while num: # 以 (名字,成绩) 的格式存入列表 entry = input().split(' ') ls.append((entry[0], int(entry[1]))) num -= 1 ls.sort(key=lambda x: x[1], reverse= False if mode else True) # 根据成绩排序 for e in ls: print(e[0], e[1]) # print 函数中“,”是加个空格,“+”是直接连接 except: break