fork download
  1. class Klasemen:
  2. def __init__(self, klub_list):
  3. # Bikin dictionary buat nyimpan poin tiap klub
  4. self.poin = {}
  5. self.hasil_pertandingan = [] # Nanti nyimpan semua hasil pertandingan
  6.  
  7. # Semua klub di-list dulu, poin awalnya 0
  8. for klub in klub_list:
  9. self.poin[klub] = 0
  10.  
  11. def catatPermainan(self, klubKandang, klubTandang, skor):
  12. # Pisahin skor jadi gol kandang dan tandang
  13. gol_kandang, gol_tandang = map(int, skor.split(':'))
  14.  
  15. # Simpan info pertandingan ke list
  16. self.hasil_pertandingan.append({
  17. 'kandang': klubKandang,
  18. 'tandang': klubTandang,
  19. 'skor': skor,
  20. 'gol_kandang': gol_kandang,
  21. 'gol_tandang': gol_tandang
  22. })
  23.  
  24. # Hitung poin sesuai hasil
  25. if gol_kandang > gol_tandang:
  26. # Tim kandang menang
  27. self.poin[klubKandang] += 3
  28. elif gol_kandang < gol_tandang:
  29. # Tim tandang menang
  30. self.poin[klubTandang] += 3
  31. else:
  32. # Kalau imbang, dua-duanya dapat 1
  33. self.poin[klubKandang] += 1
  34. self.poin[klubTandang] += 1
  35.  
  36. def cetakKlasemen(self):
  37. # Urutkan klub berdasarkan poin tertinggi ke bawah
  38. sorted_klasemen = dict(sorted(self.poin.items(), key=lambda x: x[1], reverse=True))
  39. return sorted_klasemen
  40.  
  41. def ambilPeringkat(self, nomorPeringkat):
  42. # Ambil nama klub dari urutan klasemen
  43. sorted_klasemen = self.cetakKlasemen()
  44. klub_list = list(sorted_klasemen.keys())
  45.  
  46. # Cek dulu apakah peringkat yang diminta valid
  47. if 1 <= nomorPeringkat <= len(klub_list):
  48. return klub_list[nomorPeringkat - 1]
  49. else:
  50. return None
  51.  
  52. def tampilkanHasilPertandingan(self):
  53. # Kalau belum ada data, kasih info
  54. if not self.hasil_pertandingan:
  55. print("Belum ada pertandingan yang dicatat.")
  56. return
  57.  
  58. print("=== HASIL PERTANDINGAN ===")
  59. for i, pertandingan in enumerate(self.hasil_pertandingan, 1):
  60. kandang = pertandingan['kandang']
  61. tandang = pertandingan['tandang']
  62. skor = pertandingan['skor']
  63. gol_kandang = pertandingan['gol_kandang']
  64. gol_tandang = pertandingan['gol_tandang']
  65.  
  66. # Tentukan siapa yang menang atau seri
  67. if gol_kandang > gol_tandang:
  68. hasil = f"({kandang} menang)"
  69. elif gol_kandang < gol_tandang:
  70. hasil = f"({tandang} menang)"
  71. else:
  72. hasil = "(seri)"
  73.  
  74. print(f"{i}. {kandang} {skor} {tandang} {hasil}")
  75.  
  76. def getHasilPertandingan(self):
  77. # Kembalikan list hasil pertandingan
  78. return self.hasil_pertandingan
  79.  
  80. # Contoh penggunaan
  81. if __name__ == "__main__":
  82. # Bikin klasemen buat liga Spanyol
  83. klasemen = Klasemen(['Real Madrid', 'Barcelona', 'Atletico Madrid', 'Valencia'])
  84.  
  85. # Masukkan beberapa hasil pertandingan
  86. klasemen.catatPermainan('Real Madrid', 'Barcelona', '3:1')
  87. klasemen.catatPermainan('Atletico Madrid', 'Valencia', '2:0')
  88. klasemen.catatPermainan('Barcelona', 'Atletico Madrid', '1:2')
  89. klasemen.catatPermainan('Valencia', 'Real Madrid', '1:4')
  90. klasemen.catatPermainan('Real Madrid', 'Atletico Madrid', '2:2')
  91. klasemen.catatPermainan('Barcelona', 'Valencia', '3:0')
  92. klasemen.catatPermainan('Atletico Madrid', 'Real Madrid', '0:1')
  93. klasemen.catatPermainan('Valencia', 'Barcelona', '1:1')
  94.  
  95. # Cetak hasil klasemen akhir
  96. print("=== KLASEMEN LIGA SPANYOL ===")
  97. hasil_klasemen = klasemen.cetakKlasemen()
  98. print(hasil_klasemen)
  99.  
  100. # Tampilkan siapa yang juara dan peringkat selanjutnya
  101. print(f"\nJuara Liga: {klasemen.ambilPeringkat(1)}")
  102. print(f"Peringkat 2: {klasemen.ambilPeringkat(2)}")
  103. print(f"Peringkat 3: {klasemen.ambilPeringkat(3)}")
  104. print(f"Peringkat 4: {klasemen.ambilPeringkat(4)}")
  105.  
  106. # Cetak detail poin tiap klub
  107. print("\n=== DETAIL PERHITUNGAN POIN ===")
  108. for posisi, (klub, poin) in enumerate(hasil_klasemen.items(), 1):
  109. print(f"{posisi}. {klub}: {poin} poin")
  110.  
  111. # Tampilkan semua hasil pertandingan
  112. print()
  113. klasemen.tampilkanHasilPertandingan()
  114.  
Success #stdin #stdout 0.07s 14108KB
stdin
Standard input is empty
stdout
=== KLASEMEN LIGA SPANYOL ===
{'Real Madrid': 10, 'Atletico Madrid': 7, 'Barcelona': 4, 'Valencia': 1}

Juara Liga: Real Madrid
Peringkat 2: Atletico Madrid
Peringkat 3: Barcelona
Peringkat 4: Valencia

=== DETAIL PERHITUNGAN POIN ===
1. Real Madrid: 10 poin
2. Atletico Madrid: 7 poin
3. Barcelona: 4 poin
4. Valencia: 1 poin

=== HASIL PERTANDINGAN ===
1. Real Madrid 3:1 Barcelona (Real Madrid menang)
2. Atletico Madrid 2:0 Valencia (Atletico Madrid menang)
3. Barcelona 1:2 Atletico Madrid (Atletico Madrid menang)
4. Valencia 1:4 Real Madrid (Real Madrid menang)
5. Real Madrid 2:2 Atletico Madrid (seri)
6. Barcelona 3:0 Valencia (Barcelona menang)
7. Atletico Madrid 0:1 Real Madrid (Real Madrid menang)
8. Valencia 1:1 Barcelona (seri)