Bintang di layar dibikin dari 2 loop — 1 baris 1 loop. Kita bongkar polanya.
print"*" * n untuk polaprint"*" * n + spasiSesi 09 kamu bisa mengulang 1 baris — sekarang kamu bisa mengulang baris & kolom sekaligus. Dari situ lahir semua pola.
for + range() dari Sesi 09 — itu fondasinya.
for + range() — ulang terhitung: range(1, 6) = 1–5while — ulang bersyarat, wajib ada yang mengubah kondisinyabreak / continue — henti total / skip 1 putaranSatu loop = kamu bisa mengulang SATU hal. Hari ini: mengulang yang di dalamnya ada pengulangan lagi — dan dari situ lahir semua pola.
Jalanin di kepala: baris 1 cetak apa? Baris 2? Baris 3?
Posisimu: 10 dari 17 — 59% perjalanan. Menuju List & Final Project!
n = 3
for i in range(n): # luar → baris
for j in range(n): # dalam → kolom
print("*", end=" ")
print() # ganti baris
i — jalan n kali → bikin n baris baruj — tiap baris, cetak n buah * kesampingprint() kosong = enter — pindah baris setelah kolom selesain = 3 → matriks 3 × 3end=" " tahan agar tetap 1 baris · print() baru pindah baris.
Bayangkan tabel: i pilih baris, j isi kolom. Ganti j in range(n) → range(i+1) = segitiga.
n = 4
for i in range(n):
print("*" * n)
"*" * n = trik Python — gandakan string tanpa loop dalam. * 4 kali → "****".
n = 4
for i in range(n):
print("*" * (i + 1))
Versi nested: for j in range(i+1): print("*", end="") lalu print() — hasil identik.
Bedanya cuma satu angka: n tetap → persegi · i+1 tumbuh → segitiga. Ubah i+1 → n-i = segitiga terbalik.
"*" * n (satu loop aja cukup!) end=" " + print(). Hasilnya sama — tapi inilah mesin di balik semua pola.* lalu ** lalu *** lalu **** Segitiga = persegi yang jumlah bintangnya ikut baris. Persegi: "*" * n. Segitiga: "*" * ? — ganti ? dengan apa biar baris ke-i punya i bintang?
Waktu: 10 menit. Selesai duluan? Coba segitiga terbalik — 4 bintang mengecil ke 1.
n = 4
for i in range(n):
spasi = " " * (n - i - 1)
bintang = "*" * (2 * i + 1)
print(spasi + bintang)
· = spasi. Rumus: n-i-1 spasi, 2*i+1 bintang (1, 3, 5, 7 …).
n = 4
for i in range(1, n + 1):
print(str(i) * i)
str(i) * i = angka i diulang i kali. Ganti i → n-i+1 buat pola menurun.
print(f"i={i} bintang={2*i+1}").
3 x 1 = 3 sampai 3 x 10 = 30 pakai f-string di dalam for Waktu: 10 menit. Ini pola baris × kolom yang asli dipakai: jadwal kelas, meja kafe, data Excel.
for j in range(3): # ini malah kolom
for i in range(3):
print(f"{i},{j}")
Gejala: pola nyamping/transpose — yang seharusnya ke bawah jadi ke samping. Ingat: luar = baris.
for i in range(3):
for j in range(3):
print("*", end=" ")
# lupa print() setelah loop dalam!
Gejala: semua bintang menumpuk 1 baris panjang. print() kosong = tombol ENTER.
for i in range(1, 5):
for j in range(4): # ← salah!
print("*", end=" ")
print()
Gejala: mau segitiga tapi hasilnya persegi. Segitiga butuh loop dalam yang ikut baris: range(i + 1).
Senjata debug: print pemeriksa — sisipkan print(f"i={i} j={j}") sesaat untuk melihat loop sedang jalan ke mana. Setelah paham, hapus lagi.
Bahan: " " * ? + "*" * ?. Tanya dua hal: spasi mengecil atau membesar? Bintang ganjil naik berapa?
Petunjuk: angka harus jadi teks dulu sebelum bisa dikali — str(i) * i. Kenapa i * i salah? Coba pikir!
n = 4
for i in range(n):
spasi = " " * (n - i - 1) # 3,2,1,0
bintang = "*" * (2 * i + 1) # 1,3,5,7
print(spasi + bintang)
Kenapa 2*i + 1? Bintang harus ganjil (1, 3, 5…) biar piramidanya simetris. Kenapa n - i - 1? Spasi mengecil tiap baris.
n = 4
for i in range(1, n + 1):
print(str(i) * i)
Mulai range(1, …) karena baris pertama = angka 1, bukan 0. str(i) dulu — kalau i * i itu perkalian matematika (hasil 1, 4, 9…), bukan pengulangan teks!
Metode yang sama dipakai semua pola: spasi? + apa yang diulang? + berapa kali? — jawab 3 pertanyaan itu, kode pola apa pun ketemu. Kamu bukan menghafal pola — kamu punya pabrik pola.
print() kosong = pindah baris"*" * n & segitiga siku "*" * (i+1) — beda 1 angka, beda bentuk" "*(n-i-1) + "*"*(2*i+1) — spasi mengecil, bintang ganjil membesarstr(i)*i → 1 / 22 / 333 — sama triknya, ganti karakter yang diulangprint(f"i={i} j={j}") bertahapPola hari ini 1 variabel n —
minggu depan nilai = [85, 90, 78] banyak nilai sekaligus
Dari cetak bentuk → kelola kumpulan data — daftar nilai, nama teman, stok barang.
pola.py — ubah n dari 3 ke 6, lihat semua pola membesar" " * i + "*" * (2*(n-i)-1)