2021/3/30 OJ每日一题 1194: 总成绩排序(结构体专题)python

1194: 总成绩排序(结构体专题)

有一学生成绩表,包括学号、姓名、3门课程成绩。请按如下规则排序:按总成绩降序排序,若总成绩相同,则按姓名升序排序。

输入 :

首先输入一个整数n(1<=n<=100),表示学生人数;
然后输入n行,每行包含一个学生的信息:学号(12位)、姓名(不含空格且不超过20位),以及3个整数,表示3门课成绩,数据之间用空格隔开。

输出 :

输出排序后的成绩单,格式见输出样例。

python代码:

n=int(input())
lis=[]
while n>0:
	n-=1
	li=input().split()
	lis.append(li)
#print(lis)
lis1=[]
m=len(lis)
for i in range(m):
	a = int(lis[i][2]) + int(lis[i][3]) + int(lis[i][4])
	b=lis[i]+[str(a)]
	lis1.append(b)
#冒泡法排序
for i in range(m):
	for j in range(m-i-1):
		x,y=int(lis1[j][5]),int(lis1[j+1][5])
		if x<y:
			lis1[j],lis1[j+1]=lis1[j+1],lis1[j]
		# 成绩相同按照姓名排序
		if x==y:
			lis2=[lis1[j][1],lis1[j+1][1]]
			lis2.sort()
			if lis2!=[lis1[j][1],lis1[j+1][1]]:
				lis1[j], lis1[j + 1] = lis1[j + 1], lis1[j]
# print(lis1)
for i in range(m):
	print(' '.join(map(str,lis1[i])))

2021/3/30 OJ每日一题 1194: 总成绩排序(结构体专题)python_第1张图片
人生苦短,我用python。

你可能感兴趣的:(OJ每日一题,python,oj系统)