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')
扫描下方二维码,关注后了解更多精彩内容!!