PAT 乙级(Python) #1085 PAT单位排行 (25 分)

#1085 PAT单位排行 (25 分)
在这里插入图片描述

代码展示:


N = eval(input())
rankDict = {}
for i in range(N):
    id, score, school = input().split()
    score = int(score)
    school = school.lower()
    if id[0]=='B':
        score = (score/1.5)
    elif id[0]=='A': 
        pass
    elif id[0]=='T':
        score = (score*1.5)    
    lis = rankDict.get(school,[0,0])  # 总分, 考生人数
    lis[0] = lis[0]+score
    lis[1] = lis[1]+1
    rankDict[school] = lis

ranklist = list(rankDict.items())
# print(ranklist) 
# [('au', [216, 3]), ('lanx', [99, 2]), ('cmu', [159, 2]), ('hypu', [69, 2]), ('pku', [100, 1])]

ranklist.sort(key=lambda x:x[0])
ranklist.sort(key=lambda x:x[1][1])
ranklist.sort(key=lambda x:int(x[1][0]),reverse=True)

unit_num = len(rankDict)
print(unit_num)

# 排名 学校 加权总分 考生人数
rank, scorePre = 0, -1
for id,(school,info) in enumerate(ranklist):
    score, num = info
    score = int(score)
    if score != scorePre:
        rank = id +1
        scorePre = score
    print(rank, school, score, num)

测评结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值