大学排行榜

def read_file(file, m):
    """读文件中的学校名到列表中,返回排名前m学校集合"""
    ls = []
    if file == './alumni.txt':
        with open(file, 'r', encoding='utf-8') as data:
            for line in data.readlines():
                ls.append(line.strip().split(' ')[2])
    else:
        with open(file, 'r', encoding='utf-8') as data:
            for line in data.readlines():
                ls.append(line.strip().split(' ')[1])
    return set(ls[:m])
    # with open('soft.txt', 'r', encoding='utf-8') as data:
    #     ls2 = []
    #     for line in data.readlines():
    #         ls2.append(line.strip().split(' ')[1])


def either_in_top(alumni, soft):
    """接收两个排行榜前m高校名字集合,
    获得在这两个排行榜中均名列前m的学校名,按照学校名称排序,
    返回排序后的列表
    """
    return sorted(list(alumni & soft))


def all_in_top(alumni, soft):
    """接收两个排行榜前m高校名字集合,
    获得在两个榜单中名列前m的所有学校名,按照学校名称排序,
    返回排序后的列表
    """
    return sorted(list(alumni | soft))


def only_alumni(alumni, soft):
    """接收两个排行榜前m高校名字集合,
    获得在alumni榜单中名列前m但soft榜单中未进前m的学校名,
    按照学校名称排序,返回排序后的列表
    """
    return sorted(list(alumni - soft))


def only_once(alumni, soft):
    """接收两个排行榜前m高校名字集合,
    获得在alumni和soft榜单中名列前m,但不同时出现在两个榜单的学校名,
    按照学校名称排序,返回排序后的列表
    """
    return sorted(list(alumni ^ soft))


if __name__ == '__main__':
    n = input()
    if n in '1234':
        m = int(input())
        alumni_set = read_file('./alumni.txt', m)
        print(alumni_set)
        soft_set = read_file('./soft.txt', m)
        print(soft_set)
        if n == '1':
            either_rank = either_in_top(alumni_set, soft_set)
            print(f'两榜单中均名列前{m}的学校:')
            print(either_rank)
        elif n == '2':
            all_rank = all_in_top(alumni_set, soft_set)
            print(f'两榜单名列前{m}的所有学校:')
            print(all_rank)
        elif n == '3':
            only_in_alumni_rank = only_alumni(alumni_set, soft_set)
            print(f'alumni中名列前{m},soft中未进前{m}的学校:')
            print(only_in_alumni_rank)
        elif n == '4':
            alumni_soft_rank = only_once(alumni_set, soft_set)
            print(f'不同时出现在两个榜单前{m}的学校:')
            print(alumni_soft_rank)
    else:
        print('Wrong Option')

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二十四桥_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值