P1093 [NOIP2007 普及组] 奖学金 python解题

P1093 [NOIP2007 普及组] 奖学金 python解题_第1张图片
P1093 [NOIP2007 普及组] 奖学金 python解题_第2张图片

python代码

# 接收学生个数
n = int(input())
# 制作分数二维列表
s = []
for i in range(n):
    s.append(list(map(int,input().split())))
# 制定一个类
class A():
    def __init__(self,yuwen,shuxue,yingyu,xuehao):
        self.yuwen = yuwen
        self.shuxue = shuxue
        self.yingyu = yingyu
        self.zongfen = yuwen+shuxue+yingyu
        self.xuehao = xuehao
# 存放学生对象
xuesheng = []
# 制作学生对象列表
i = 1
for x in s:
    xuesheng.append(A(x[0],x[1],x[2],i))
    i += 1  
# 制定三个排序规则  
def san(i):
    return i.zongfen
def er(i):
    return i.yuwen
def yi(i):
    return i.xuehao
# 先按学号排序 从小到大
xuesheng.sort(key=yi, reverse=False)
# 再按语文成绩排序 保证语文成绩相同时,小学号在前
xuesheng.sort(key=er, reverse=True)
# 最后按总分排序,保证总分相同时,语文成绩高的在前,保证语文成绩相同时,小学号在前
xuesheng.sort(key=san, reverse=True)
# 取出前5个
xuesheng = xuesheng[:5]       
for i in xuesheng:
	# 输出学号及总分
    print(i.xuehao,i.zongfen)

你可能感兴趣的:(NOIP题解python,python,排序算法,开发语言)