class Klasemen:
def __init__(self, daftarTim: list[str]) -> None:
self.daftarTim: list[str] = daftarTim
self.hasilKlasemen: dict = {}
for tim in self.daftarTim:
self.hasilKlasemen.update({f"{tim}":0})
def catatPermainan(self, homeTeam: str, awayTeam: str, score: str):
if (self.daftarTim.count(homeTeam) == 0 and self.daftarTim.count(awayTeam) == 0):
print("Ada tim yang tidak terdaftar dalam data")
return
formatted_score = score.split(":")
try:
homeScore = int(formatted_score[0])
awayScore = int(formatted_score[1])
if (homeScore < awayScore):
self.hasilKlasemen[awayTeam] += 3
elif (homeScore > awayScore):
self.hasilKlasemen[homeTeam] += 3
else:
self.hasilKlasemen[homeTeam] += 1
self.hasilKlasemen[awayTeam] += 1
except Exception as e:
print("Format score tidak sesuai")
def cetakKlasemen(self):
hasil = []
hasilSementara = dict(sorted(self.hasilKlasemen.items(), key=lambda tim:tim[1], reverse=True))
for tim in hasilSementara:
hasil.append({tim : hasilSementara[tim]})
return hasil
def ambilPeringkat(self, peringkat: int)-> str:
hasilSementara = sorted(self.hasilKlasemen.items(), key=lambda tim:tim[1], reverse=True)
return hasilSementara[peringkat-1][0]
if __name__ == "__main__":
klasemen = Klasemen(['Liverpool', 'Chelsea', 'Arsenal'])
klasemen.catatPermainan('Arsenal', 'Liverpool', '2:1')
klasemen.catatPermainan('Arsenal', 'Chelsea', '1:1')
klasemen.catatPermainan('Chelsea', 'Arsenal', '0:3')
klasemen.catatPermainan('Chelsea', 'Liverpool', '3:2')
klasemen.catatPermainan('Liverpool', 'Arsenal', '2:2')
klasemen.catatPermainan('Liverpool', 'Chelsea', '0:0')
print(klasemen.cetakKlasemen())
print(klasemen.ambilPeringkat(2))
Y2xhc3MgS2xhc2VtZW46CiAgICAKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkYWZ0YXJUaW06IGxpc3Rbc3RyXSkgLT4gTm9uZToKICAgICAgICBzZWxmLmRhZnRhclRpbTogbGlzdFtzdHJdID0gZGFmdGFyVGltCiAgICAgICAgc2VsZi5oYXNpbEtsYXNlbWVuOiBkaWN0ID0ge30KICAgICAgICBmb3IgdGltIGluIHNlbGYuZGFmdGFyVGltOgogICAgICAgICAgICBzZWxmLmhhc2lsS2xhc2VtZW4udXBkYXRlKHtmInt0aW19IjowfSkKICAgICAgICAKICAgIGRlZiBjYXRhdFBlcm1haW5hbihzZWxmLCBob21lVGVhbTogc3RyLCBhd2F5VGVhbTogc3RyLCBzY29yZTogc3RyKToKICAgICAgICBpZiAoc2VsZi5kYWZ0YXJUaW0uY291bnQoaG9tZVRlYW0pID09IDAgYW5kIHNlbGYuZGFmdGFyVGltLmNvdW50KGF3YXlUZWFtKSA9PSAwKToKICAgICAgICAgICAgcHJpbnQoIkFkYSB0aW0geWFuZyB0aWRhayB0ZXJkYWZ0YXIgZGFsYW0gZGF0YSIpCiAgICAgICAgICAgIHJldHVybgogICAgICAgIGZvcm1hdHRlZF9zY29yZSA9IHNjb3JlLnNwbGl0KCI6IikKICAgICAgICB0cnk6CiAgICAgICAgICAgIGhvbWVTY29yZSA9IGludChmb3JtYXR0ZWRfc2NvcmVbMF0pCiAgICAgICAgICAgIGF3YXlTY29yZSA9IGludChmb3JtYXR0ZWRfc2NvcmVbMV0pCiAgICAgICAgICAgIGlmIChob21lU2NvcmUgPCBhd2F5U2NvcmUpOgogICAgICAgICAgICAgICAgc2VsZi5oYXNpbEtsYXNlbWVuW2F3YXlUZWFtXSArPSAzCiAgICAgICAgICAgIGVsaWYgKGhvbWVTY29yZSA+IGF3YXlTY29yZSk6CiAgICAgICAgICAgICAgICBzZWxmLmhhc2lsS2xhc2VtZW5baG9tZVRlYW1dICs9IDMKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHNlbGYuaGFzaWxLbGFzZW1lbltob21lVGVhbV0gKz0gMQogICAgICAgICAgICAgICAgc2VsZi5oYXNpbEtsYXNlbWVuW2F3YXlUZWFtXSArPSAxCiAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICBwcmludCgiRm9ybWF0IHNjb3JlIHRpZGFrIHNlc3VhaSIpCiAgICAKICAgIGRlZiBjZXRha0tsYXNlbWVuKHNlbGYpOgogICAgICAgIGhhc2lsID0gW10KICAgICAgICBoYXNpbFNlbWVudGFyYSA9IGRpY3Qoc29ydGVkKHNlbGYuaGFzaWxLbGFzZW1lbi5pdGVtcygpLCBrZXk9bGFtYmRhIHRpbTp0aW1bMV0sIHJldmVyc2U9VHJ1ZSkpCiAgICAgICAgZm9yIHRpbSBpbiBoYXNpbFNlbWVudGFyYToKICAgICAgICAgICAgaGFzaWwuYXBwZW5kKHt0aW0gOiBoYXNpbFNlbWVudGFyYVt0aW1dfSkKICAgICAgICByZXR1cm4gaGFzaWwKICAgICAgICAKICAgIGRlZiBhbWJpbFBlcmluZ2thdChzZWxmLCBwZXJpbmdrYXQ6IGludCktPiBzdHI6CiAgICAgICAgaGFzaWxTZW1lbnRhcmEgPSBzb3J0ZWQoc2VsZi5oYXNpbEtsYXNlbWVuLml0ZW1zKCksIGtleT1sYW1iZGEgdGltOnRpbVsxXSwgcmV2ZXJzZT1UcnVlKQogICAgICAgIHJldHVybiBoYXNpbFNlbWVudGFyYVtwZXJpbmdrYXQtMV1bMF0KICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgCmlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICBrbGFzZW1lbiA9IEtsYXNlbWVuKFsnTGl2ZXJwb29sJywgJ0NoZWxzZWEnLCAnQXJzZW5hbCddKQogICAgCiAgICBrbGFzZW1lbi5jYXRhdFBlcm1haW5hbignQXJzZW5hbCcsICdMaXZlcnBvb2wnLCAnMjoxJykKICAgIGtsYXNlbWVuLmNhdGF0UGVybWFpbmFuKCdBcnNlbmFsJywgJ0NoZWxzZWEnLCAnMToxJykKICAgIGtsYXNlbWVuLmNhdGF0UGVybWFpbmFuKCdDaGVsc2VhJywgJ0Fyc2VuYWwnLCAnMDozJykKICAgIGtsYXNlbWVuLmNhdGF0UGVybWFpbmFuKCdDaGVsc2VhJywgJ0xpdmVycG9vbCcsICczOjInKQogICAga2xhc2VtZW4uY2F0YXRQZXJtYWluYW4oJ0xpdmVycG9vbCcsICdBcnNlbmFsJywgJzI6MicpCiAgICBrbGFzZW1lbi5jYXRhdFBlcm1haW5hbignTGl2ZXJwb29sJywgJ0NoZWxzZWEnLCAnMDowJykKICAgIAogICAgcHJpbnQoa2xhc2VtZW4uY2V0YWtLbGFzZW1lbigpKQogICAgCiAgICBwcmludChrbGFzZW1lbi5hbWJpbFBlcmluZ2thdCgyKSk=