fork download
  1. class Klasemen:
  2. def __init__(self, clubs):
  3. # make every club start at 0 point
  4. self.poin = {club: 0 for club in clubs}
  5.  
  6. def catatPermainan(self, klubKandang, klubTandang, skor):
  7. home, away = skor.split(":") # split with :
  8. home, away = int(home), int(away)
  9.  
  10. if home > away:
  11. self.poin[klubKandang] += 3 # home/kandang win
  12. elif away > home:
  13. self.poin[klubTandang] += 3 # away/tandang win
  14. else:
  15. self.poin[klubKandang] += 1 # tie, both teams get 1 poin
  16. self.poin[klubTandang] += 1
  17.  
  18. # core logic
  19. def ambilPeringkat(self, nomorPeringkat):
  20. clubs = list(self.cetakKlasemen().keys())
  21. # self.cetakKlasemen refers to klasemen table with self so knows which table
  22. # keys only grab the club names like Arsenal, Chelsea, Liverpool
  23. # list makes it into a list like ['Arsenal', 'Chelsea', 'Liverpool']
  24. return clubs[nomorPeringkat - 1] # buat fit ke array karena array mulai dari 0
  25.  
  26. def cetakKlasemen(self):
  27. return dict(sorted(self.poin.items(), key=lambda x: x[1], reverse=True))
  28. # self.poin.items() turns the dict into pairs, e.g. ('Arsenal', 8)
  29. # lambda x: x[1] means sort by x[1] (points)
  30. # reverse=True sorts descending, and dict() converts it back to a dictionary
  31.  
  32.  
  33. # samples
  34. klasemen = Klasemen(['Liverpool', 'Chelsea', 'Arsenal'])
  35. klasemen.catatPermainan('Arsenal', 'Liverpool', '2:1')
  36. klasemen.catatPermainan('Arsenal', 'Chelsea', '1:1')
  37. klasemen.catatPermainan('Chelsea', 'Arsenal', '0:3')
  38. klasemen.catatPermainan('Chelsea', 'Liverpool', '3:2')
  39. klasemen.catatPermainan('Liverpool', 'Arsenal', '2:2')
  40. klasemen.catatPermainan('Liverpool', 'Chelsea', '0:0')
  41. print(klasemen.cetakKlasemen()) # {'Arsenal': 8, 'Chelsea': 5, 'Liverpool': 2}
  42. print(klasemen.ambilPeringkat(2)) # Chelsea
Success #stdin #stdout 0.07s 14188KB
stdin
Standard input is empty
stdout
{'Arsenal': 8, 'Chelsea': 5, 'Liverpool': 2}
Chelsea