IPL Match Details
Write a program that reads all the match outcomes and summarizes the information of all the matches.
Points are given to the terms based on the outcome of the match.
A win earns a team 3 points.A draw earns 1.A loss earns 0.
The following information is expected:
MP:Matches Played
W:Matches Won
D:Matches Drawn(Tied)
L:Matches Lost
P:Points
The team information should be displayed in descending order of points.
Sample input 1
6
CSK;RR;loss
RR;DD;draw
MI;KKR;win
KKR;RR;loss
CSK;DD;draw
MI;DD; draw
Sample output 1
Team: RR, Matches Played: 3, Won: 2, Lost: 0, Draw: 1, Points: 7
Team: MI, Matches Played: 2, Won: 1, Lost: 0, Draw: 1, Points: 4
Team: DD, Matches Played: 3, Won: 0, Lost: 0, Draw: 3, Points: 3
Team: CSK, Matches Played: 2, Won: 0, Lost: 1, Draw: 1, Points: 1
Team: KKR, Matches Played: 2, Won: 0, Lost: 2, Draw: 0, Points: 0
def addResult(teams, name, result):
if name in teams:
L = teams[name]
else:
L = [0, 0, 0]
if result == 'win':
L[0] += 1
elif result == 'draw':
L[1] += 1
else:
L[2] += 1
teams[name] = L
def calcPoints(name, results):
points = 3*results[0] + results[1]
return (points, name, results)
def toString(teamRec):
points, name, results = teamRec
won, lost, draw = results
played = won + lost + draw
s = f'Team: {name}, Matches Played: {played}, Won: {won}, Lost: {lost}, Draw: {draw}, Points: {points}'
return s
n = int(input())
teams = {}
for i in range(n):
line = input().split(';')
team1 = line[0].strip()
team2 = line[1].strip()
result = line[2].strip()
addResult(teams, team1, result)
if result == 'win':
result = 'loss'
elif result == 'loss':
result = 'win'
addResult(teams, team2, result)
L = []
for name in teams:
L.append(calcPoints(name, teams[name]))
L.sort(reverse=True)
for rec in L:
print(toString(rec))
Comments
Leave a comment