赞
踩
主要内容是校设课程的习题和课外学习的一些习题。
欢迎关注 『Python习题』 系列,持续更新中
欢迎关注 『Python习题』 系列,持续更新中
大学排名没有绝对的公正与权威,附件(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
10
输出:
两榜单中均名列前10的学校:
['上海交通大学', '**大学', '**大学', '**大学', '**大学', '**大学', '**大学', '**大学', '**大学', '**大学']
输入:
2
10
输出:
两榜单名列前10的所有学校:
['上海交通大学', '**大学', '**大学', '**大学', '**大学', '**大学', '**大学', '**大学', '**大学', '**大学', ..........]
输入:
3
10
输出:
alumni中名列前10,soft中未进前10的学校:
['中国人民大学', .............................]
### 示例 4
输入
4
10
输出:
不同时出现在两个榜单前10的学校:
['中国人民大学', .............................]
def read_file(file, m):
"""读文件中的学校名到列表中,返回前m个记录的学校集合"""
f = open(file, 'r',encoding='utf-8')
lines=[]
for i in range(m):
line=f.readline().strip("\n")
lines.append(line.split()[1])#把学校添加列表
return lines
result.sort()
result.extend(alumni)
result.extend(soft)
result=list(set(result))
def read_file(file, m):
"""读文件中的学校名到列表中,返回前m个记录的学校集合"""
f = open(file, 'r',encoding='utf-8')
lines=[]
for i in range(m):
line=f.readline().strip("\n")
lines.append(line.split()[1])#把学校添加列表
return lines
def either_in_top(alumni, soft):
"""接收两个排行榜前m高校名字集合,
获得在这两个排行榜中均在前m个记录的学校名,按照学校名称排序,
返回排序后的列表
"""
result=[]
for i in range(len(alumni)):
if alumni[i] in soft:#如果同时在两个表中都有这个学校
result.append(alumni[i])
result.sort()#升序排序
return result
def all_in_top(alumni, soft):
"""接收两个排行榜前m高校名字集合,
获得在两个榜单中名列前m的所有学校名,按照学校名称排序,
返回排序后的列表
"""
result=[]
result.extend(alumni)#列表合并alumni
result.extend(soft)#列表合并soft
result=list(set(result))#列表去重
result.sort()#升序排序
return result
def only_alumni(alumni, soft):
"""接收两个排行榜前m高校名字集合,
获得在alumni榜单中名列前m但soft榜单中未进前m的学校名,
按照学校名称排序,返回排序后的列表
"""
result=[]
for i in range(len(alumni)):
if alumni[i] in soft:
continue
else:#如果在alumni榜单中名列前m但soft榜单中未进前m的学校名
result.append(alumni[i])
result.sort()#升序排序
return result
def only_once(alumni, soft):
"""接收两个排行榜前m高校名字集合,
获得在alumni和soft榜单中名列前m,但不同时出现在两个榜单的学校名,
按照学校名称排序,返回排序后的列表
"""
result=[]
for i in range(len(alumni)):
if alumni[i] in soft:
continue
else:#如果在alumni榜单中名列前m但soft榜单中未进前m的学校名
result.append(alumni[i])
for i in range(len(soft)):
if soft[i] in alumni:
continue
else:#如果在soft榜单中名列前m但alumni榜单中未进前m的学校名
result.append(soft[i])
result.sort()#升序排序
return result
def judge(n):
if n in '1234':
m = int(input())
alumni_set = read_file('./alumni.txt', m)
soft_set = read_file('./soft.txt', m)
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')
if __name__ == '__main__':
num = input()
judge(num)
大家喜欢的话,给个声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。