武汉理工大学实验十第四关

第4关:体育收入排行2012-2019

100

  • 任务要求
  • 参考答案
  • 重置记录
  • 评论
  • 关卡排行榜

任务描述

附件中文件为2012-2019年世界运动员收入排行榜,编码格式为UTF-8

文件内容及格式如下图所示:

其中pay是该运动员当年度的收入综合,salary是工资收入,endorsement是广告和其他收入。

pay的金额是salary+endorsement的和

图片

请分析文件并读取数据,完成以下功能:

  1. 某年的收入排名前若干名选手 如果输入n是2012-19之间的年份,则可以输入整数k,输出n年的前k名排名信息。如果k大于当年排名运动员人数,则输出当年所有的信息。每行一名运动员信息,以' | '间隔该行各项信息。

  2. 某年属于某个运动项目的所有运动员信息,和收入总和 如果输入的是sport(不区分大小写),则可以继续输入一个年份201*,输出一个当年排行中的运动项目菜单,按照字符串升序排列,格式见示例,再输入运动项目对应的数字来输出该项运动当年的运动员数据,每行一名运动员信息,以' | '间隔该行各项信息。最后输出该项运动n年的表中收入总和,格式为 TOTAL: ${:.2f} M

  3. 如果输入不是年份或者sport(不区分大小写),输出Wrong Input

本题只保证测试用例中的年份均可以找到对应数据。

针对本文件,同学们也可以讨论和思考下,还可以做出哪些方面的数据统计。

答案如下:

def read_file():

    with open('step5/2012-19sport.csv', 'r', encoding='utf-8') as data:

        # ls1 = data.readline().strip().split(',')

        data.readline()

        ls2 = []

        for line in data.readlines():

            ls2.append(line.strip().split(','))

        # print(ls1)

        # print(ls2)

        for i in range(len(ls2)):

            ls2[i][0] = ls2[i][0].replace('#', '')

        # print(ls2)

        # print(ls1 + ls2)

        return ls2

def fun1(year, ls):

    k = int(input())

    ls_one_year = []

    for element in ls:

        # print(element)

        if element[6] == str(year):

            ls_one_year.append(element)

    for element in ls_one_year[:k]:

        print(*element, sep=' | ')

def fun2(ls):

    year = int(input())

    ls_one_year = []

    for item in ls:

        if item[6] == str(year):

            ls_one_year.append(item)

    ls1 = sorted(list(set(item[5] for item in ls_one_year)))

    for element in ls1:

        print(f'{ls1.index(element) + 1}: {element}')

    ls_key = [i for i in range(1, len(ls1) + 1)]

    dt1 = dict(zip(ls_key, ls1))

    key = int(input())

    # print(dt1)

    ls_sport = []

    for element in ls_one_year:

        if element[5] == dt1[key]:

            ls_sport.append(element)

    # print(ls_sport)

    for element in ls_sport:

        print(*element, sep=' | ')

    ls_pay = []

    for element in ls_sport:

        ls_pay.append(float(element[2].replace('$', '').replace(' M', '')))

    # print(ls_pay)

    print('TOTAL: ${:.2f} M'.format(sum(ls_pay)))

if __name__ == '__main__':

    ls_return = read_file()

    option = input()

    try:

        option = int(option)

        if 2012 <= option <= 2019:

            fun1(option, ls_return)

        else:

            print('Wrong Input')

    except Exception as e:

        option = option.lower()

        if option == 'sport':

            fun2(ls_return)

        else:

            print('Wrong Input')

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值