Answer to Question #220897 in Python for Siva

Question #220897

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 teams 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.Input

Names of teams may contain spaces but will be less than 24 characters


100 >= N >= 0


Sample Input1

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

Sample input 2


Sample output 2

No output



1
Expert's answer
2021-07-27T07:44:38-0400
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))

Need a fast expert's response?

Submit order

and get a quick answer at the best price

for any assignment or question with DETAILED EXPLANATIONS!

Comments

No comments. Be the first!

Leave a comment

LATEST TUTORIALS
New on Blog
APPROVED BY CLIENTS