fork download
  1. class Klasemen:
  2. """
  3. Sistem poin:
  4. - Menang: 3 poin
  5. - Seri: 1 poin
  6. - Kalah: 0 poin
  7. """
  8.  
  9. def __init__(self, daftar_klub):
  10. """
  11. Inisialisasi klasemen dengan daftar klub.
  12.  
  13. daftar_klub (list): List berisi nama-nama klub
  14. """
  15. self.poin_klub = {}
  16. for klub in daftar_klub:
  17. self.poin_klub[klub] = 0
  18.  
  19. def catat_permainan(self, klubKandang, klubTandang, skor):
  20. """
  21. Mencatat hasil pertandingan dan menghitung poin.
  22.  
  23. klubKandang (str): Nama klub kandang
  24. klubTandang (str): Nama klub tandang
  25. skor (str): Skor pertandingan dalam format "x:y"
  26. """
  27. # Validasi klub
  28. if klubKandang not in self.poin_klub:
  29. raise ValueError(f"Klub {klubKandang} tidak terdaftar")
  30. if klubTandang not in self.poin_klub:
  31. raise ValueError(f"Klub {klubTandang} tidak terdaftar")
  32.  
  33. # Parse skor
  34. try:
  35. skor_kandang, skor_tandang = map(int, skor.split(':'))
  36. except ValueError:
  37. raise ValueError("Format skor tidak valid. Gunakan format 'x:y'")
  38.  
  39. # Hitung poin berdasarkan hasil
  40. if skor_kandang > skor_tandang:
  41. # Kandang menang
  42. self.poin_klub[klubKandang] += 3
  43. elif skor_kandang < skor_tandang:
  44. # Tandang menang
  45. self.poin_klub[klubTandang] += 3
  46. else:
  47. # Seri
  48. self.poin_klub[klubKandang] += 1
  49. self.poin_klub[klubTandang] += 1
  50.  
  51. def cetak_klasemen(self):
  52. # Urutkan berdasarkan poin (descending)
  53. sorted_klasemen = dict(sorted(self.poin_klub.items(),
  54. key=lambda x: x[1],
  55. reverse=True))
  56. return sorted_klasemen
  57.  
  58. def ambil_peringkat(self, nomor_peringkat):
  59. if nomor_peringkat < 1 or nomor_peringkat > len(self.poin_klub):
  60. raise ValueError(f"Nomor peringkat harus antara 1 dan {len(self.poin_klub)}")
  61.  
  62. # Dapatkan klasemen yang sudah diurutkan
  63. klasemen_urut = self.cetak_klasemen()
  64.  
  65. # Ambil klub pada peringkat yang diminta
  66. klub_list = list(klasemen_urut.keys())
  67. return klub_list[nomor_peringkat - 1]
  68.  
  69.  
  70. # Contoh penggunaan
  71. if __name__ == "__main__":
  72.  
  73. # Buat klasemen
  74. klasemen = Klasemen(['Liverpool', 'Chelsea', 'Arsenal'])
  75.  
  76. # Catat pertandingan
  77. klasemen.catat_permainan('Arsenal', 'Liverpool', '2:1')
  78. klasemen.catat_permainan('Arsenal', 'Chelsea', '1:1')
  79. klasemen.catat_permainan('Chelsea', 'Arsenal', '0:3')
  80. klasemen.catat_permainan('Chelsea', 'Liverpool', '3:2')
  81. klasemen.catat_permainan('Liverpool', 'Arsenal', '2:2')
  82. klasemen.catat_permainan('Liverpool', 'Chelsea', '0:0')
  83.  
  84. # Cetak klasemen
  85. print("Klasemen:")
  86. hasil_klasemen = klasemen.cetak_klasemen()
  87. for klub, poin in hasil_klasemen.items():
  88. print(f"{klub}: {poin} poin")
  89.  
  90. print(f"\nHasil Klasemen: {hasil_klasemen}")
  91.  
  92. # Peringkat
  93. print("\nPeringkat Klasemen:")
  94. for i in range(1, len(klasemen.poin_klub) + 1):
  95. print(f"Peringkat {i}: {klasemen.ambil_peringkat(i)}")
  96.  
  97. # Ambil peringkat 2
  98. print(f"\nAmbil Peringkat 2: {klasemen.ambil_peringkat(2)}")
Success #stdin #stdout 0.12s 14108KB
stdin
Standard input is empty
stdout
Klasemen:
Arsenal: 8 poin
Chelsea: 5 poin
Liverpool: 2 poin

Hasil Klasemen: {'Arsenal': 8, 'Chelsea': 5, 'Liverpool': 2}

Peringkat Klasemen:
Peringkat 1: Arsenal
Peringkat 2: Chelsea
Peringkat 3: Liverpool

Ambil Peringkat 2: Chelsea