19. Nested loop — Solusi Pekerjaan Rumah
File solusi .py ada di
exercises/19/homework/solutions/.
Soal 1 — Persegi panjang tanda pagar
Soal. Blok # lebar 5 dan tinggi 3.
Cara memikirkannya. Loop luar = baris (3). Loop
dalam = kolom (5): bangun satu baris berisi lima #, lalu
cetak.
Solusi.
for row in range(1, 4):
line = ""
for col in range(1, 6):
line = line + "#"
print(line)Soal 2 — Pasangan koordinat
Soal. Cetak setiap (x, y) untuk x dan y
dari 1 sampai 3.
Solusi.
for x in range(1, 4):
for y in range(1, 4):
print(f"({x}, {y})")Output: (1, 1), (1, 2),
(1, 3), (2, 1), ... — sembilan baris.
Kesalahan umum.
- Menggunakan
xuntuk kedua loop. Setiap loop membutuhkan variable sendiri.
Soal 3 — Tabel perkalian
Soal. Grid perkalian 5×5.
Solusi.
for row in range(1, 6):
line = ""
for col in range(1, 6):
line = line + str(row * col) + "\t"
print(line)Output:
1 2 3 4 5
2 4 6 8 10
3 6 9 12 15
4 8 12 16 20
5 10 15 20 25
Tantangan — Segitiga siku-siku
Soal. Segitiga 6 baris di mana baris n
memiliki n bintang, lalu terbalik.
Solusi.
# growing
for row in range(1, 7):
line = ""
for star in range(1, row + 1):
line = line + "*"
print(line)
# shrinking
for row in range(6, 0, -1):
line = ""
for star in range(1, row + 1):
line = line + "*"
print(line)Keduanya berbeda hanya dalam arah loop luar: range(1, 7)
ke atas, range(6, 0, -1) ke bawah. Loop dalam identik.
Kesalahan umum.
- Menggunakan range dalam yang tetap
range(1, 7)bukanrange(1, row + 1). Range dalam yang tetap memberikan persegi panjang; segitiga muncul dari mengikat hitungan dalam ke baris saat ini.
Selesai?
Kamu bisa membangun grid dan bentuk dari loop di dalam loop. Bab terakhir Bagian 4 — Pola loop — menamai pekerjaan yang paling sering dilakukan loop: menjumlahkan, menghitung, mencari, dan menandai.