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 x untuk 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) bukan range(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.