大学排名没有绝对的公正与权威,附件(alumni.txt, soft.txt)中为按照不同评价体系给出的国内大学前100名排行,对比两个排行榜单前m的学校的上榜情况,分析不同排行榜排名的差异。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
    根据输入,输出以下内容:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
    第一行输入1,第二行输入m,输出在alumni.txt和soft.txt榜单中均在前m个记录的大学,按照学校名称升序。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
    第一行输入2,第二行输入m,输出在alumni.txt或者soft.txt榜单中前m个记录的所有大学,按照学校名称升序。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
    第一行输入3,第二行输入m,输出出现在榜单alumni.txt中前m个记录但未出现在榜单soft.txt前m个记录中的大学,按照学校名称升序。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
    第一行输入4,第二行输入m,输出没有同时出现在榜单alumni.txt前m个记录和榜单soft.txt前m个记录的大学,按照学校名称升序。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
    第一行输入其他数据,则直接输出‘Wrong Option’

    1. def read_file(file,m):
    2. """读文件中的学校名到列表中,返回前m个记录的学校集合"""
    3. with open(file, "r", encoding="utf-8") as data:
    4. university_list = [line.strip().split()[1] for line in data]
    5. return set(university_list[:m])
    6. def either_in_top(alumni, soft):
    7. """接收两个排行榜前m高校名字集合,
    8. 获得在这两个排行榜中均在前m个记录的学校名,按照学校名称排序,
    9. 返回排序后的列表
    10. """
    11. either_set = alumni & soft
    12. return sorted(list(either_set))
    13. def all_in_top(alumni, soft):
    14. """接收两个排行榜前m高校名字集合,
    15. 获得在两个榜单中名列前m的所有学校名,按照学校名称排序,
    16. 返回排序后的列表
    17. """
    18. all_in_set = alumni | soft
    19. return sorted(list(all_in_set))
    20. def only_alumni(alumni, soft):
    21. """接收两个排行榜前m高校名字集合,
    22. 获得在alumni榜单中名列前m但soft榜单中未进前m的学校名,
    23. 按照学校名称排序,返回排序后的列表
    24. """
    25. only_alumni_set = alumni - soft
    26. return sorted(list(only_alumni_set))
    27. def only_once(alumni, soft):
    28. """接收两个排行榜前m高校名字集合,
    29. 获得在alumni和soft榜单中名列前m,但不同时出现在两个榜单的学校名,
    30. 按照学校名称排序,返回排序后的列表
    31. """
    32. only_once_set = alumni ^ soft
    33. return sorted(list(only_once_set))
    34. if __name__ == '__main__':
    35. n=input()
    36. if n in '1234':
    37. m=int(input())
    38. alumni_set = read_file('./alumni.txt',m)
    39. soft_set = read_file('./soft.txt',m)
    40. if n=='1':
    41. either_rank = either_in_top(alumni_set, soft_set)
    42. print(f'两榜单中均名列前{m}的学校:')
    43. print(either_rank)
    44. elif n=='2':
    45. all_rank = all_in_top(alumni_set, soft_set)
    46. print(f'两榜单名列前{m}的所有学校:')
    47. print(all_rank)
    48. elif n=='3':
    49. only_in_alumni_rank = only_alumni(alumni_set, soft_set)
    50. print(f'alumni中名列前{m},soft中未进前{m}的学校:')
    51. print(only_in_alumni_rank)
    52. elif n=='4':
    53. alumni_soft_rank = only_once(alumni_set, soft_set)
    54. print(f'不同时出现在两个榜单前{m}的学校:')
    55. print(alumni_soft_rank)
    56. else:
    57. print('Wrong Option')