class Klasemen:
def __init__(self, klub_list):
# Bikin dictionary buat nyimpan poin tiap klub
self.poin = {}
self.hasil_pertandingan = [] # Nanti nyimpan semua hasil pertandingan
# Semua klub di-list dulu, poin awalnya 0
for klub in klub_list:
self.poin[klub] = 0
def catatPermainan(self, klubKandang, klubTandang, skor):
# Pisahin skor jadi gol kandang dan tandang
gol_kandang, gol_tandang = map(int, skor.split(':'))
# Simpan info pertandingan ke list
self.hasil_pertandingan.append({
'kandang': klubKandang,
'tandang': klubTandang,
'skor': skor,
'gol_kandang': gol_kandang,
'gol_tandang': gol_tandang
})
# Hitung poin sesuai hasil
if gol_kandang > gol_tandang:
# Tim kandang menang
self.poin[klubKandang] += 3
elif gol_kandang < gol_tandang:
# Tim tandang menang
self.poin[klubTandang] += 3
else:
# Kalau imbang, dua-duanya dapat 1
self.poin[klubKandang] += 1
self.poin[klubTandang] += 1
def cetakKlasemen(self):
# Urutkan klub berdasarkan poin tertinggi ke bawah
sorted_klasemen = dict(sorted(self.poin.items(), key=lambda x: x[1], reverse=True))
return sorted_klasemen
def ambilPeringkat(self, nomorPeringkat):
# Ambil nama klub dari urutan klasemen
sorted_klasemen = self.cetakKlasemen()
klub_list = list(sorted_klasemen.keys())
# Cek dulu apakah peringkat yang diminta valid
if 1 <= nomorPeringkat <= len(klub_list):
return klub_list[nomorPeringkat - 1]
else:
return None
def tampilkanHasilPertandingan(self):
# Kalau belum ada data, kasih info
if not self.hasil_pertandingan:
print("Belum ada pertandingan yang dicatat.")
return
print("=== HASIL PERTANDINGAN ===")
for i, pertandingan in enumerate(self.hasil_pertandingan, 1):
kandang = pertandingan['kandang']
tandang = pertandingan['tandang']
skor = pertandingan['skor']
gol_kandang = pertandingan['gol_kandang']
gol_tandang = pertandingan['gol_tandang']
# Tentukan siapa yang menang atau seri
if gol_kandang > gol_tandang:
hasil = f"({kandang} menang)"
elif gol_kandang < gol_tandang:
hasil = f"({tandang} menang)"
else:
hasil = "(seri)"
print(f"{i}. {kandang} {skor} {tandang} {hasil}")
def getHasilPertandingan(self):
# Kembalikan list hasil pertandingan
return self.hasil_pertandingan
# Contoh penggunaan
if __name__ == "__main__":
# Bikin klasemen buat liga Spanyol
klasemen = Klasemen(['Real Madrid', 'Barcelona', 'Atletico Madrid', 'Valencia'])
# Masukkan beberapa hasil pertandingan
klasemen.catatPermainan('Real Madrid', 'Barcelona', '3:1')
klasemen.catatPermainan('Atletico Madrid', 'Valencia', '2:0')
klasemen.catatPermainan('Barcelona', 'Atletico Madrid', '1:2')
klasemen.catatPermainan('Valencia', 'Real Madrid', '1:4')
klasemen.catatPermainan('Real Madrid', 'Atletico Madrid', '2:2')
klasemen.catatPermainan('Barcelona', 'Valencia', '3:0')
klasemen.catatPermainan('Atletico Madrid', 'Real Madrid', '0:1')
klasemen.catatPermainan('Valencia', 'Barcelona', '1:1')
# Cetak hasil klasemen akhir
print("=== KLASEMEN LIGA SPANYOL ===")
hasil_klasemen = klasemen.cetakKlasemen()
print(hasil_klasemen)
# Tampilkan siapa yang juara dan peringkat selanjutnya
print(f"\nJuara Liga: {klasemen.ambilPeringkat(1)}")
print(f"Peringkat 2: {klasemen.ambilPeringkat(2)}")
print(f"Peringkat 3: {klasemen.ambilPeringkat(3)}")
print(f"Peringkat 4: {klasemen.ambilPeringkat(4)}")
# Cetak detail poin tiap klub
print("\n=== DETAIL PERHITUNGAN POIN ===")
for posisi, (klub, poin) in enumerate(hasil_klasemen.items(), 1):
print(f"{posisi}. {klub}: {poin} poin")
# Tampilkan semua hasil pertandingan
print()
klasemen.tampilkanHasilPertandingan()