您好,欢迎来到华佗小知识。
搜索
您的当前位置:首页python——体育收入排行2012-2019

python——体育收入排行2012-2019

来源:华佗小知识

体育收入排行2012-2019

描述

附件中文件为2012-2019年世界运动员收入排行榜

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

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

本题只保证测试用例中的年份均可以找到对应数据。
针对本文件,同学们也可以讨论和思考下,还可以做出哪些方面的数据统计。

示例 1

输入:

2020

输出:

Wrong Input

示例 2

输入:

SPORT
2019
9

输出:

1: Auto Racing
2: Baseball
3: Basketball
4: Boxing
5: Cricket
6: Football
7: Golf
8: Mixed Martial Arts
9: Soccer
10: Tennis
9     #输入:再输入运动项目对应的数字9后的输出
1 | Lionel Messi | $127 M | $92 M | $35 M | Soccer | 2019
2 | Cristiano Ronaldo | $109 M | $65 M | $44 M | Soccer | 2019
3 | Neymar | $105 M | $75 M | $30 M | Soccer | 2019
44 | Paul Pogba | $33 M | $29 M | $4 M | Soccer | 2019
46 | Andres Iniesta | $32.5 M | $30 M | $2.5 M | Soccer | 2019
53 | Alexis Sánchez | $30.8 M | $28.3 M | $2.5 M | Soccer | 2019
55 | Kylian Mbappe | $30.6 M | $26.6 M | $4 M | Soccer | 2019
57 | Mesut Ozil | $30.2 M | $23.7 M | $6.5 M | Soccer | 2019
66 | Oscar | $29 M | $27 M | $2 M | Soccer | 2019
75 | Antoine Griezmann | $27.7 M | $23.2 M | $4.5 M | Soccer | 2019
79 | Gareth Bale | $27.1 M | $20.6 M | $6.5 M | Soccer | 2019
98 | Mohamed Salah | $25.1 M | $16.1 M | $9 M | Soccer | 2019
TOTAL: $607.00 M

示例 3

输入:

2019
5

输出:

1 | Lionel Messi | $127 M | $92 M | $35 M | Soccer | 2019
2 | Cristiano Ronaldo | $109 M | $65 M | $44 M | Soccer | 2019
3 | Neymar | $105 M | $75 M | $30 M | Soccer | 2019
4 | Canelo Alvarez | $94 M | $92 M | $2 M | Boxing | 2019
5 | Roger Federer | $93.4 M | $7.4 M | $86 M | Tennis | 2019

参考代码

#fopen()读取文件做二维列表l,格式为:

#[['Rank', 'Name', 'Pay', 'Salary/Winnings', 'Endorsements', 'Sport', 'Year'],

# ['1', 'Lionel Messi', '$127 M', '$92 M', '$35 M', 'Soccer', '2019']

# ['2', 'Cristiano Ronaldo', '$109 M', '$65 M', '$44 M', 'Soccer', '2019'], ...]

def fopen():
    l=[]
    with open('2012-19sport.csv','r',encoding='UTF-8') as f:
        for i in f.readlines():
            l.append(i.strip().split(','))

    for i in l:
        i[0]=i[0].strip('#')
    return l

#sportclass()获得排行中所有的运动类别,返回排序列表
def sportclass(lt):
    s=set()
    for i in lt[1:]:
        s.add(i[-2])
    return sorted(s)


lt=fopen()
c=input()  #输入选项

if c.isdigit() and 2012<=eval(c)<=2019: #如果输入的是年份,继续输入需要显示的n名运动员
    n=int(input())
    if n>100:    #如果超过100,输出所有当年信息
        n=100
    ln=[]
    for i in lt[1:]:
        if i[-1]==c:
            ln.append(i)
    for i in ln[:n]:
        print(' | '.join(i))
elif c.lower()=='sport':  #如果输入sport, 输出所有运动选项并编号,并统计n年的该运动板块总收入
    d={}   #字典存放键值对,选项:运动类别
    n = input()  # 年份
    ln=[]
    for i in lt[1:]:
        if i[-1] == n:
            ln.append(i)
    lsc=sportclass(ln)
    for i,j in enumerate(lsc):
        print('{}: {}'.format(i+1,j))
        d[i+1]=j
    k=input()   #输入运动选项
    s=0
    for i in lt[1:]:
        if i[-1]==n and i[-2]==d[int(k)]:
            print(' | '.join(i))
            s+=eval(i[2][1:-1])
    print('TOTAL: ${:.2f} M'.format(s))
else:
    print('Wrong Input')

本人写的代码:

with open('2012-19sport.csv', 'r', encoding='utf-8') as f:
    data = [p.strip().split(',') for p in f.readlines()]
    for i in data:
        i[0] = i[0].strip('#')

n = input()
if n.isdigit() and 2012 <= int(n) <= 2019:
    data = [p for p in data if p[-1] == n]
    k = int(input())
    if k > len(data):
        k = len(data)
    for person in data[:k]:
        print('{} | {} | {} | {} | {} | {} | {}'.format(person[0], person[1], person[2], person[3], person[4], person[5], person[6]))
elif n.lower() == 'sport':
    year = input()
    race = list(set([person[-2] for person in data if person[-1] == year]))
    race.sort()
    race = dict(zip([i for i in range(1, len(race)+1)], race))
    for key, value in race.items():
        print('{}: {}'.format(key, value))
    num = int(input())
    data = [person for person in data if person[-1] == year and person[-2] == race.get(num)]
    tot = 0
    for person in data:
        print('{} | {} | {} | {} | {} | {} | {}'.format(person[0], person[1], person[2], person[3], person[4], person[5], person[6]))
        tot += eval(person[2].split()[0].split('$')[1])
    print('TOTAL: ${:.2f} M'.format(tot))
else:
    print('Wrong Input')

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo0.cn 版权所有 湘ICP备2023017654号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务