体育收入排行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
参考代码
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
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=int(input())
if n>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':
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')