PAT 乙级 1085 PAT单位排行 python

本文介绍如何使用字典存储并按名次、参考人数和总分排序学生成绩,以展示学校间成绩对比。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
思路
利用字典存储各单位成绩参考人数的信息,key为单位名称,value为[总分,参考人数]组成的list
需要注意的地方,总分为加权之后的和的整数部分,不是每一个分数的整数部分
输出排序的方法为:
先对字典按照名称输出先后排序
在对字典根据参考人数从小到大排序
再对字典按照总分大小从高到低排序即可

代码

stu_num=int(input())
school_score_num={}
count=0
for i in range(stu_num):
    id,score,school=input().split()
    if id[0]=='B':
        score=int(score)/1.5
    elif id[0]=='T':
        score = int(score) * 1.5
    else:
        score = int(score)

    lower_school=school.lower()
    if  lower_school not in school_score_num:
        count = count+1
        school_score_num[lower_school]=[score,1]
    else:
        school_score_num[lower_school][0] += score
        school_score_num[lower_school][1] += 1

print(count)
for tmp in school_score_num:
    school_score_num[tmp][0]=int(school_score_num[tmp][0])
school_score_num=sorted(school_score_num.items(), key=lambda x:x[0],reverse=False)
school_score_num=sorted(school_score_num, key=lambda x:x[1][1],reverse=False)
school_score_num=sorted(school_score_num, key=lambda x:x[1][0],reverse=True)

before_score=school_score_num[0][1][0]
print(f'{1} {school_score_num[0][0]} {school_score_num[0][1][0]} {school_score_num[0][1][1]}')
before_rank=1
for i in range(1,count):
    if school_score_num[i][1][0]==before_score:
        print(f'{before_rank} {school_score_num[i][0]} {school_score_num[i][1][0]} {school_score_num[i][1][1]}')
    else:
        print(f'{i+1} {school_score_num[i][0]} {school_score_num[i][1][0]} {school_score_num[i][1][1]}')
        before_rank=i+1
        before_score=school_score_num[i][1][0]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值