Answer to Question #259977 in Python for Raju

Question #259977

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


1
Expert's answer
2021-11-02T02:20:29-0400
def print_detail(detail):
    detail = dict(sorted(detail.items(), key=lambda item: item[1][4], reverse=True))
    for name in detail:
        s = f"Team: {name}, "
        s += f"Matches Played: {detail[name][0]}, "
        s += f"Won:  {detail[name][1]}, "
        s += f"Lost:  {detail[name][2]}, "
        s += f"Draw:  {detail[name][3]}, "
        s += f"Points:  {detail[name][4]}"
        print(s)


def add_math(name, res):
    global detail
    if name not in detail:
        detail[name] = {"mp":0,"w":0,"l":0,"d":0,"p":0}
        detail[name] = [0,0,0,0,0]
    if res == "win":
        detail[name][1] += 1
        detail[name][0] += 1
        detail[name][4] += 3
    elif res == "draw":
        detail[name][3] += 1
        detail[name][0] += 1
        detail[name][4] += 1
    elif res == "loss":
        detail[name][2] += 1
        detail[name][0] += 1




detail = {}
n = int(input())
for i in range(n):
    s = input().split(";")
    if s[2] == "win":
        info = add_math(s[0], "win")
        info = add_math(s[1], "loss")
    elif s[2] == "loss":
        info = add_math(s[1], "win")
        info = add_math(s[0], "loss")
    elif s[2] == "draw":
        info = add_math(s[0], "draw")
        info = add_math(s[1], "draw")
print_detail(detail)




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