Belajar dengan membaca secara berurutan

Loop for dengan range / enumerate / zip

Pelajari loop for di Python untuk mengiterasi list, string, dan dict, lalu kombinasikan dengan range / enumerate / zip.

Sejauh ini kita sudah belajar percabangan dengan if / elif dan pemeriksaan massal dengan all() / any().

Di artikel ini, kamu akan menguasai pernyataan for untuk menjalankan pekerjaan yang sama pada setiap elemen di sebuah list. Dengan if dan for di kotak peralatanmu, kamu bisa menulis sebagian besar kode praktis sehari-hari.

Mengambil satu elemen sekaligus dengan for

Pernyataan for mengambil objek yang bisa diulang (iterable) seperti list, tuple, string, atau dict, lalu mengambil elemen satu per satu dari awal, mengikat masing-masing ke variabel yang kamu sebut dan menjalankan blok-mu setiap kali.

Bentuk dasarnya adalah satu baris for variabel in iterable: plus blok yang diberi indentasi 4 spasi.

Apa yang dilakukan satu iterasi for
listambil satuelementetapkan kevariabeljalankanblokelemen berikutnyaulangi

Ambil satu elemen dari koleksitetapkan ke variabeljalankan blok → lanjut ke berikutnya, ulangi sampai elemen habis.

# Loop pada sebuah list
fruits = ["apple", "banana", "orange"]
for fruit in fruits:
    print(fruit)
# Output:
# apple
# banana
# orange

# String juga iterable (satu karakter sekali)
for ch in "ABC":
    print(ch)
# Mencetak A / B / C secara berurutan

Jangan lupa titik dua dan indentasi 4 spasi

Baris for harus diakhiri dengan : (titik dua), dan setiap baris blok harus diberi indentasi 4 spasi (atau satu tab). Indentasi yang tidak cocok memunculkan IndentationError.

Loop pada sebuah dict dengan for

Jika kamu meneruskan dict ke for secara langsung, hanya key yang diambil bergiliran. Untuk juga mendapatkan value-nya, .items() adalah pilihan yang umum. Jika kamu hanya butuh value, pakai .values().

BentukYang kamu dapatPenggunaan umum
for key in d:keyKetika key saja sudah cukup
for value in d.values():valueKetika kamu hanya butuh value untuk agregasi
for key, value in d.items():pasangan key/valueKetika kamu butuh keduanya — untuk tampilan terformat atau penyaringan
user = {"name": "budi", "age": 29, "role": "admin"}

# Hanya key
for key in user:
    print(key)
# name / age / role

# Hanya value
for value in user.values():
    print(value)
# budi / 29 / admin

# Key dan value bersama
for key, value in user.items():
    print(f"{key}: {value}")
# name: budi / age: 29 / role: admin

Hitung total dari sebuah dict produk dan harga satuan.

① Definisikan prices = {"apple": 180, "bread": 320, "milk": 250}.

② Inisialisasi total = 0, lalu loop pada .values() dengan for dan tambahkan tiap value ke total.

③ Cetak total di akhir dengan print(total).

(Penjelasan akan muncul setelah kamu menjalankan kode dengan benar.)

Python Editor

Jalankan kode untuk melihat output

Mengulang sejumlah kali tetap dengan range()

range(n) adalah fungsi built-in yang mengembalikan sequence integer dari 0 sampai n-1, dan digabung dengan for ini cara andalan untuk menulis loop dengan jumlah tetap. Ada 3 cara umum untuk memanggilnya.

Cara kerja range()
range(5)0,1,2,3,45 iterasimenghasilkanfor berurutan
BentukNilai yang dihasilkanPenggunaan
range(5)0, 1, 2, 3, 40 sampai n-1
range(2, 8)2, 3, 4, 5, 6, 7Tentukan awal dan akhir (akhir eksklusif)
range(1, 10, 2)1, 3, 5, 7, 9Tentukan awal, akhir, dan langkah
# Loop 0 sampai 4
for i in range(5):
    print(i)
# Mencetak 0 1 2 3 4 (5 baris)

# 2 sampai 7
for i in range(2, 8):
    print(i)

# 1 sampai 9 dengan langkah 2
for i in range(1, 10, 2):
    print(i)

# Pakai _ ketika kamu hanya butuh hitungan, bukan value
for _ in range(3):
    print("coba ulang...")

Memberi nama variabel loop _ (garis bawah) adalah konvensi untuk langsung memberi sinyal "variabel ini tidak dipakai di dalam". i atau j akan tetap bekerja, tapi membaca kode di mana keduanya tidak pernah dipakai membuat pembaca berhenti dan bertanya kenapa — jadi pakai _ ketika kamu hanya peduli pada hitungan.

Hitung jumlah integer dari 1 sampai 10.

① Inisialisasi total = 0.

② Pakai for dan range() untuk menambahkan 1 sampai 10 ke total.

③ Cetak total dengan print(total).

Python Editor

Jalankan kode untuk melihat output

enumerate dan zip untuk indeks dan list paralel

Di kode dunia nyata, kamu sering menginginkan posisi setiap elemen juga, atau kamu ingin iterasi pada beberapa list secara paralel. enumerate() dan zip() membuat hal-hal ini jauh lebih ringkas dan mudah dibaca.

enumerate() — loop dengan indeks

Membungkus list dalam enumerate(list) memberimu pasangan (indeks, elemen) secara berurutan. Berguna untuk tampilan peringkat atau menampilkan nomor baris dalam pesan error — di mana saja kamu ingin menempelkan "yang mana" ke setiap nilai.

products = ["apple", "bread", "milk"]

for index, name in enumerate(products):
    print(f"{index}: {name}")
# 0: apple
# 1: bread
# 2: milk

# Untuk mulai dari 1, teruskan start sebagai argumen kedua
for rank, name in enumerate(products, 1):
    print(f"#{rank}: {name}")
# #1: apple / #2: bread / #3: milk

zip() — iterasi beberapa list secara paralel

zip(list1, list2, ...) memungkinkanmu mengambil elemen pada indeks yang sama bersama-sama dari beberapa list. Ia berhenti ketika list terpendek habis, jadi aman bahkan dengan panjang yang tidak cocok.

names  = ["Budi", "Siti", "Ayu"]
scores = [82, 91, 65]

for name, score in zip(names, scores):
    print(f"{name}: {score} poin")
# Budi: 82 poin / Siti: 91 poin / Ayu: 65 poin

Buat daftar harga bernomor dari nama produk dan harga.

① Definisikan items = ["apple", "bread", "milk"] dan prices = [180, 320, 250].

② Menggabungkan enumerate dan zip, cetak nomor berbasis 1, nama, dan harga dalam format 1. apple : 180.

Python Editor

Jalankan kode untuk melihat output

Mengontrol loop dengan break dan continue

Sering ada keinginan untuk berhenti karena sudah menemukan yang dibutuhkan atau melewati hanya iterasi ini. Yang pertama memakai break untuk meninggalkan loop segera; yang kedua memakai continue untuk melewati sisa iterasi ini dan pindah ke elemen berikutnya.

break vs. continue
loop forif condbreakkeluar looploop forif condcontinueelemen berikutnyaTruekeluarTruelewati

break mengakhiri loop itu sendiri, jadi sisa elemen tidak dievaluasi sama sekali. continue hanya melewati sisa iterasi ini dan pindah ke elemen berikutnya — loop secara keseluruhan tetap berjalan. Keduanya biasanya dipanggil dari dalam sebuah if.

# break: berhenti segera setelah menemukan target
users = ["budi", "siti", "ayu", "deni"]
for name in users:
    if name == "ayu":
        print("Ditemukan")
        break
    print(f"memeriksa: {name}")
# memeriksa: budi / memeriksa: siti / Ditemukan

# continue: lewati 0 ketika menjumlahkan
scores = [80, 0, 65, 0, 91]
total = 0
for score in scores:
    if score == 0:
        continue
    total += score
print(total)   # 80 + 65 + 91 = 236

Telusuri daftar stok, memakai continue untuk melewati dan memakai break ketika kamu melihat sesuatu yang tidak normal.

① Definisikan stock = [12, 4, 0, 9, -1, 3].

② Pakai enumerate untuk mengambil nomor berbasis 1 dan jumlah, lalu:

 - Untuk item dengan jumlah 0, lewati tanpa mencetak (continue).

 - Untuk item dengan jumlah negatif, cetak "Nilai abnormal terdeteksi di #X" lalu break.

 - Selainnya, cetak "#X OK (Y unit)".

Python Editor

Jalankan kode untuk melihat output

Di artikel ini, kita membahas gambaran besar for: iterasi pada list dan dict, menghitung dengan range(), memperluas dengan enumerate() / zip(), dan mengontrol alur dengan break / continue.

Di artikel berikutnya, kita akan melihat loop while — dipakai untuk mengulang ketika kamu tidak tahu hitungannya di awal — dan cara menghindari loop tak terbatas.

QUIZ

Cek Pemahaman

Jawab setiap pertanyaan satu per satu.

Soal 1Apa yang dicetak kode ini?
for i in range(2, 6):
print(i)

Soal 2Ketika kamu memperluas enumerate(['a', 'b', 'c'], 1) dengan for, pasangan apa yang dihasilkan?

Soal 3Apa yang dicetak kode ini?
nums = [1, 2, 3, 4, 5]
for n in nums:
if n == 3:
continue
print(n)