武汉理工大学python123实验——文件

一、 概览

二、参考代码

1. 大学排行榜分析  #126373

# --------      -------    --------
# @Author : 赵广辉   
# @Contact: vasp@qq.com
# @Company: 武汉理工大学
# @Version: 1.0
# @Modify : 2022/06/13 11:33
# Python程序设计基础,赵广辉,高等教育出版社,2021
# Python程序设计基础实践教程,赵广辉,高等教育出版社,2021
# --------      -------    --------

def read_file(file,m):
    """读文件中的学校名到列表中,返回前m个记录的学校集合"""
    with open(file,'r',encoding='utf-8') as f:
        a = list(f.readlines())
        #print(a)
        ###########关键代码
        ls = [list(i.split())[1] for i in a]
        #print(ls)
        return ls[0:m]


def either_in_top(alumni, soft):
    """接收两个排行榜前m高校名字集合,
    获得在这两个排行榜中均在前m个记录的学校名,按照学校名称排序,
    返回排序后的列表
    """
    ls = []
 
    for i in alumni:
        if i in soft:
            ls.append(i)
    ls.sort()
    return ls




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


def only_alumni(alumni, soft):
    """接收两个排行榜前m高校名字集合,
    获得在alumni榜单中名列前m但soft榜单中未进前m的学校名,
    按照学校名称排序,返回排序后的列表
    """
    ls = []
    for i in alumni:
        if i not in soft:
            ls.append(i)
    ls.sort()
    return ls


def only_once(alumni, soft):
    """接收两个排行榜前m高校名字集合,
    获得在alumni和soft榜单中名列前m,但不同时出现在两个榜单的学校名,
    按照学校名称排序,返回排序后的列表
    """
    ls = []
    for i in alumni:
        if i not in soft:
            ls.append(i)
    for i in soft:
        if i not in alumni:
            ls.append(i)
    ls.sort()
    return ls



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}的学
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值