fork download
  1. class Klasemen:
  2. def __init__(self, daftar_klub):
  3. # Menyimpan total poin setiap klub.
  4. self.poin_klub = {klub: 0 for klub in daftar_klub}
  5.  
  6. def catatPermainan(self, klubKandang, klubTandang, skor):
  7. if klubKandang not in self.poin_klub or klubTandang not in self.poin_klub:
  8. raise ValueError("Nama klub tidak terdaftar dalam klasemen.")
  9.  
  10. try:
  11. skor_kandang_str, skor_tandang_str = skor.split(":")
  12. skor_kandang = int(skor_kandang_str)
  13. skor_tandang = int(skor_tandang_str)
  14. except ValueError as exc:
  15. raise ValueError("Format skor harus 'angka:angka'.") from exc
  16.  
  17. # Tambahkan poin berdasarkan hasil akhir pertandingan.
  18. if skor_kandang > skor_tandang:
  19. self.poin_klub[klubKandang] += 3
  20. elif skor_kandang < skor_tandang:
  21. self.poin_klub[klubTandang] += 3
  22. else:
  23. self.poin_klub[klubKandang] += 1
  24. self.poin_klub[klubTandang] += 1
  25.  
  26. def cetakKlasemen(self):
  27. # Urutkan dari poin tertinggi, lalu nama klub jika poin sama.
  28. urutan = sorted(
  29. self.poin_klub.items(),
  30. key=lambda item: (-item[1], item[0])
  31. )
  32. return dict(urutan)
  33.  
  34. def ambilPeringkat(self, nomorPeringkat):
  35. urutan_klub = list(self.cetakKlasemen().keys())
  36.  
  37. if nomorPeringkat < 1 or nomorPeringkat > len(urutan_klub):
  38. raise IndexError("Nomor peringkat di luar jangkauan.")
  39.  
  40. return urutan_klub[nomorPeringkat - 1]
  41.  
  42.  
  43. if __name__ == "__main__":
  44. klasemen = Klasemen(["Liverpool", "Chelsea", "Arsenal"])
  45. klasemen.catatPermainan("Arsenal", "Liverpool", "2:1")
  46. klasemen.catatPermainan("Arsenal", "Chelsea", "1:2")
  47. klasemen.catatPermainan("Chelsea", "Arsenal", "0:3")
  48. klasemen.catatPermainan("Chelsea", "Liverpool", "3:2")
  49. klasemen.catatPermainan("Liverpool", "Arsenal", "2:2")
  50. klasemen.catatPermainan("Liverpool", "Chelsea", "0:0")
  51.  
  52. print(klasemen.cetakKlasemen())
  53. print(klasemen.ambilPeringkat(2))
  54.  
Success #stdin #stdout 0.08s 14028KB
stdin
Standard input is empty
stdout
{'Arsenal': 7, 'Chelsea': 7, 'Liverpool': 2}
Chelsea