python大学排行榜

 1 def read_file(file):
 2     """@参数 file:文件名,字符串类型
 3     读文件中的学校名到列表中,返回排名前10学校集合,集合类型。
 4     """
 5     s = set()
 6     f = open(file, 'r', encoding='utf-8')# 打开要去掉空行的文件
 7     l = f.readlines()
 8     for j in l:
 9         if file == "soft.txt":
10             j = j.split(" ")
11             j[1] = j[1][:-1]
12         else:
13             j = j.split("  ")
14         if int(j[0])<=10:
15             s.add(j[1])
16         else:
17             break
18     return s
19 
20 
21 def either_in_top(alumni, soft):
22     """
23     @参数 alumni:alumni大学排行榜中排名前10的学校的集合,集合类型
24     @参数 soft:soft大学排行榜中排名前10的学校的集合,集合类型
25     接收两个排行榜前10高校名字集合,返回在这两个排行榜中均名列前10的学校名。
26     """
27     return (alumni & soft)
28 
29 
30 def all_in_top(alumni, soft):
31     """
32     @参数 alumni:alumni大学排行榜中排名前10的学校的集合,集合类型
33     @参数 soft:soft大学排行榜中排名前10的学校的集合,集合类型
34     接收两个排行榜前10高校名字集合,
35     返回在两个榜单中名列前10的所有学校名。
36     """
37     return (alumni | soft)
38 
39 
40 def only_alumni(alumni, soft):
41     """
42     @参数 alumni:alumni大学排行榜中排名前10的学校的集合,集合类型
43     @参数 soft:soft大学排行榜中排名前10的学校的集合,集合类型
44     接收两个排行榜前10高校名字集合,返回在alumni榜单中名列前10但soft榜单中未进前10的学校名。
45     """
46     
47     return (alumni.difference(soft))
48     
49     
50 def only_one(alumni, soft):
51     """
52     @参数 alumni:alumni大学排行榜中排名前10的学校的集合,集合类型
53     @参数 soft:soft大学排行榜中排名前10的学校的集合,集合类型
54     接收两个排行榜前10高校名字集合,返回在alumni和soft榜单中名列前10,
55     但不同时出现在两个榜单的学校名。
56     """
57     either_rank = either_in_top(alumni_set, soft_set)
58     all_rank = all_in_top(alumni_set, soft_set)
59     return (all_rank.symmetric_difference(either_rank))
60     
61     
62 if __name__ == '__main__':
63     alumni_set = read_file('alumni.txt')    #路径像我一样就要.py文件和.txt文件放在相同目录下
64     soft_set = read_file('soft.txt')
65     either_rank = either_in_top(alumni_set, soft_set)
66     all_rank = all_in_top(alumni_set, soft_set)
67     only_in_alumni_rank = only_alumni(alumni_set, soft_set)
68     alumni_soft_rank = only_one(alumni_set, soft_set)
69     print(either_in_top(alumni_set, soft_set))
70     print("\n")
71     print(f'两榜单中均名列前10的学校{either_rank}')
72     print("\n")
73     print(f'两榜单名列前10的所有学校{all_rank}')
74     print("\n")
75     print(f'alumni中名列前10,soft中未进前10的学校{only_in_alumni_rank}')
76     print("\n")
77     print(f'不同时出现在两个榜单前10的学校{alumni_soft_rank}')

 

posted @ 2022-04-28 11:34  风里带刀  阅读(454)  评论(0)    收藏  举报