fork download
  1. def teka_teki_teko(batas):
  2. """
  3. Fungsi untuk mencetak angka 1 sampai batas dengan aturan penggantian:
  4. - Habis dibagi 2 -> "Teka"
  5. - Habis dibagi 3 -> "Teki"
  6. - Habis dibagi 5 -> "Teko"
  7. - Kombinasi sesuai dengan pembagi yang terpenuhi
  8.  
  9. Args:
  10. batas (int): Batas atas pencetakan, harus >= 20
  11.  
  12. Raises:
  13. ValueError: Jika batas bukan integer atau < 20
  14. """
  15. # Validasi input: harus integer dan minimal 20
  16. if not isinstance(batas, int) or batas < 20:
  17. raise ValueError("Parameter batas harus berupa integer dan minimal 20")
  18.  
  19. # Loop dari 1 sampai batas
  20. for i in range(1, batas + 1):
  21. output = ""
  22.  
  23. if i % 2 == 0:
  24. output += "Teka"
  25.  
  26. if i % 3 == 0:
  27. output += "Teki"
  28.  
  29. if i % 5 == 0:
  30. output += "Teko"
  31.  
  32. if output == "":
  33. output = str(i)
  34.  
  35. print(output)
  36.  
  37. # Test
  38. print("=== Testing teka_teki_teko(30) ===")
  39. try:
  40. teka_teki_teko(30)
  41. except Exception as e:
  42. print(f"Error: {e}")
  43.  
  44. print("\n=== Testing dengan parameter invalid ===")
  45. try:
  46. teka_teki_teko(15) # error karena < 20
  47. except Exception as e:
  48. print(f"Error: {e}")
  49.  
  50. try:
  51. teka_teki_teko("abc") # error karena bukan integer
  52. except Exception as e:
  53. print(f"Error: {e}")
  54.  
  55. try:
  56. teka_teki_teko(19.5) # error karena bukan integer
  57. except Exception as e:
  58. print(f"Error: {e}")
  59.  
  60. print("\n=== Testing dengan batas minimum (20) ===")
  61. try:
  62. teka_teki_teko(20)
  63. except Exception as e:
  64. print(f"Error: {e}")
  65.  
  66. print("\n=== Testing dengan batas lebih besar ===")
  67. try:
  68. teka_teki_teko(25)
  69. except Exception as e:
  70. print(f"Error: {e}")
Success #stdin #stdout 0.1s 14132KB
stdin
Standard input is empty
stdout
=== Testing teka_teki_teko(30) ===
1
Teka
Teki
Teka
Teko
TekaTeki
7
Teka
Teki
TekaTeko
11
TekaTeki
13
Teka
TekiTeko
Teka
17
TekaTeki
19
TekaTeko
Teki
Teka
23
TekaTeki
Teko
Teka
Teki
Teka
29
TekaTekiTeko

=== Testing dengan parameter invalid ===
Error: Parameter batas harus berupa integer dan minimal 20
Error: Parameter batas harus berupa integer dan minimal 20
Error: Parameter batas harus berupa integer dan minimal 20

=== Testing dengan batas minimum (20) ===
1
Teka
Teki
Teka
Teko
TekaTeki
7
Teka
Teki
TekaTeko
11
TekaTeki
13
Teka
TekiTeko
Teka
17
TekaTeki
19
TekaTeko

=== Testing dengan batas lebih besar ===
1
Teka
Teki
Teka
Teko
TekaTeki
7
Teka
Teki
TekaTeko
11
TekaTeki
13
Teka
TekiTeko
Teka
17
TekaTeki
19
TekaTeko
Teki
Teka
23
TekaTeki
Teko