class Klasemen:
"""
Sistem poin:
- Menang: 3 poin
- Seri: 1 poin
- Kalah: 0 poin
"""
def __init__(self, daftar_klub):
"""
Inisialisasi klasemen dengan daftar klub.
daftar_klub (list): List berisi nama-nama klub
"""
self.poin_klub = {}
for klub in daftar_klub:
self.poin_klub[klub] = 0
def catat_permainan(self, klubKandang, klubTandang, skor):
"""
Mencatat hasil pertandingan dan menghitung poin.
klubKandang (str): Nama klub kandang
klubTandang (str): Nama klub tandang
skor (str): Skor pertandingan dalam format "x:y"
"""
# Validasi klub
if klubKandang not in self.poin_klub:
raise ValueError(f"Klub {klubKandang} tidak terdaftar")
if klubTandang not in self.poin_klub:
raise ValueError(f"Klub {klubTandang} tidak terdaftar")
# Parse skor
try:
skor_kandang, skor_tandang = map(int, skor.split(':'))
except ValueError:
raise ValueError("Format skor tidak valid. Gunakan format 'x:y'")
# Hitung poin berdasarkan hasil
if skor_kandang > skor_tandang:
# Kandang menang
self.poin_klub[klubKandang] += 3
elif skor_kandang < skor_tandang:
# Tandang menang
self.poin_klub[klubTandang] += 3
else:
# Seri
self.poin_klub[klubKandang] += 1
self.poin_klub[klubTandang] += 1
def cetak_klasemen(self):
# Urutkan berdasarkan poin (descending)
sorted_klasemen = dict(sorted(self.poin_klub.items(),
key=lambda x: x[1],
reverse=True))
return sorted_klasemen
def ambil_peringkat(self, nomor_peringkat):
if nomor_peringkat < 1 or nomor_peringkat > len(self.poin_klub):
raise ValueError(f"Nomor peringkat harus antara 1 dan {len(self.poin_klub)}")
# Dapatkan klasemen yang sudah diurutkan
klasemen_urut = self.cetak_klasemen()
# Ambil klub pada peringkat yang diminta
klub_list = list(klasemen_urut.keys())
return klub_list[nomor_peringkat - 1]
# Contoh penggunaan
if __name__ == "__main__":
# Buat klasemen
klasemen = Klasemen(['Liverpool', 'Chelsea', 'Arsenal'])
# Catat pertandingan
klasemen.catat_permainan('Arsenal', 'Liverpool', '2:1')
klasemen.catat_permainan('Arsenal', 'Chelsea', '1:1')
klasemen.catat_permainan('Chelsea', 'Arsenal', '0:3')
klasemen.catat_permainan('Chelsea', 'Liverpool', '3:2')
klasemen.catat_permainan('Liverpool', 'Arsenal', '2:2')
klasemen.catat_permainan('Liverpool', 'Chelsea', '0:0')
# Cetak klasemen
print("Klasemen:")
hasil_klasemen = klasemen.cetak_klasemen()
for klub, poin in hasil_klasemen.items():
print(f"{klub}: {poin} poin")
print(f"\nHasil Klasemen: {hasil_klasemen}")
# Peringkat
print("\nPeringkat Klasemen:")
for i in range(1, len(klasemen.poin_klub) + 1):
print(f"Peringkat {i}: {klasemen.ambil_peringkat(i)}")
# Ambil peringkat 2
print(f"\nAmbil Peringkat 2: {klasemen.ambil_peringkat(2)}")