"""Sesi 09 — Looping / Perulangan | Kode Pendamping Lengkap
SMAS St. John · Ekskul CSSE (Python)

Cara pakai:
  1. Simpan file ini, buka di VS Code
  2. Tekan Run ▶ (atau ketik di terminal: python kode.py)
  3. Baca output di terminal — lalu baca komentar di dalamnya:
     setiap BAGIAN sesuai urutan slide deck Sesi 09

File ini mengikuti alur deck:
  BAGIAN 1 = for + range()          (slide 04)
  BAGIAN 2 = while                  (slide 05)
  BAGIAN 3 = break & continue       (slide 06)
  BAGIAN 4 = tugas 1: cetak & hitung (slide 07)
  BAGIAN 5 = tugas 2: akumulasi      (slide 09)
  BAGIAN 6 = challenge: tebak angka  (slide 10-11)
"""

# ============================================================
# BAGIAN 1 — for + range(): komputer yang mengulang
# ============================================================
# for = ulang TERHITUNG (kamu sudah tahu berapa kali)

for i in range(5):          # 0, 1, 2, 3, 4  (berhenti SEBELUM 5)
    print(i)

# Tiga varian range — hafal ini (slide 04):
for i in range(1, 6):       # mulai 1, berhenti sebelum 6 → 1,2,3,4,5
    print("hitung:", i)

for genap in range(0, 10, 2):   # step 2 = lompat 2 → 0,2,4,6,8
    print("genap:", genap)

for mundur in range(10, 0, -1): # step -1 = hitung mundur → 10..1
    print("mundur:", mundur)

# Bonus (slide 04): for bisa jalan di atas teks — per huruf
for huruf in "Python":
    print("huruf:", huruf)

# ============================================================
# BAGIAN 2 — while: selama benar, ulang
# ============================================================
# while = ulang BERSYARAT (belum tentu tahu berapa kali)
# ATURAN EMAS: di dalam loop harus ada yang mengubah kondisinya!

angka = 1
while angka <= 5:
    print("while", angka)
    angka += 1              # kalau baris ini dilupakan → infinite loop!

print("Selesai — angka sekarang:", angka)

# ============================================================
# BAGIAN 3 — break & continue: kendali mid-jalan
# ============================================================
# continue = skip putaran ini, lanjut berikutnya
# break    = keluar dari loop seketika

for i in range(1, 8):
    if i == 2:
        continue            # lewati angka 2
    if i == 6:
        break               # henti sebelum mencetak 6
    print("control", i)     # output: 1, 3, 4, 5

# JEBAKAN ∞ (slide 06) — JANGAN di-run dulu, baca dulu:
# while True:
#     print("muter selamanya...")   # tanpa break → tekan Ctrl+C untuk stop!
# Solusi: selalu sediakan jalan keluar (break atau pengubah kondisi).

# ============================================================
# BAGIAN 4 — Tugas 1: cetak & hitung (slide 07)
# ============================================================
# Level 1 — cetak 1 sampai 10

for i in range(1, 11):
    print(i)

# Level 2 — deret genap 0 sampai 20
# for genap in range(0, 21, 2):
#     print(genap)

# Level 3 — hitung mundur 10..1 lalu teriak
# for mundur in range(10, 0, -1):
#     print(mundur)
# print("Lift-off!")

# ============================================================
# BAGIAN 5 — Tugas 2: akumulasi (slide 09)
# ============================================================
# POLA AKUMULASI — yang paling sering dipakai di dunia nyata:
# variabel penampung sebelum loop, di-update di dalam loop.

total = 0
for hari in range(1, 8):        # tabungan 7 hari
    total = total + 2000
    print(f"Hari {hari}: total {total}")
print("Total:", total)          # 14000 — cetak di LUAR loop!

# Rata-rata nilai (level 2)
nilai = [80, 75, 90, 85]
jumlah = 0
for n in nilai:
    jumlah = jumlah + n
rata = jumlah / len(nilai)
print("Rata-rata:", rata)       # 82.5

# ============================================================
# BAGIAN 6 — Challenge: tebak angka (slide 10-11)
# ============================================================
# Game loop pertamamu: while + input + if + break.
# Hilangkan tanda # di bawah untuk mencoba versi interaktif:

# rahasia = 7
# while True:
#     tebakan = int(input("Tebak angkaku (1-10): "))
#     if tebakan > rahasia:
#         print("kebanyakan!")
#     elif tebakan < rahasia:
#         print("kurang!")
#     else:
#         print("BEKU! Kamu menang!")
#         break

# Versi tanpa break (slide 11) — while + syarat:
# rahasia = 7
# tebakan = 0
# while tebakan != rahasia:
#     tebakan = int(input("Tebak angkaku (1-10): "))
#     if tebakan > rahasia:
#         print("kebanyakan!")
#     elif tebakan < rahasia:
#         print("kurang!")
# print("BEKU! Kamu menang!")

# ============================================================
# Case kumulatif — rekap nilai (bekal Sesi 11: List)
# ============================================================
total = 0
for nilai in range(70, 81, 5):   # 70, 75, 80
    total += nilai
print("Total nilai:", total)
