range() — Deretan Angka
Kecil tapi dipakai di hampir setiap perulangan. Yang perlu diluruskan sekali di awal: batas akhirnya tidak ikut.
Intisari
range(akhir)·range(mulai, akhir)·range(mulai, akhir, langkah).- Angka akhir tidak ikut.
range(5)memberi 0,1,2,3,4 — lima angka, berhenti sebelum 5. - Mulai dari 0 kalau tidak disebut. Ini sengaja: cocok dengan penomoran indeks di Fase 4.
- Langkah boleh negatif untuk menghitung mundur:
range(10, 0, -1). range()tidak menyimpan semua angkanya di memori — ia membuat satu per satu saat dibutuhkan.
Tiga bentuk
range(5) # 0 1 2 3 4
range(2, 6) # 2 3 4 5
range(0, 10, 2) # 0 2 4 6 8
range(10, 0, -1) # 10 9 8 7 6 5 4 3 2 1
| Bentuk | Arti |
|---|---|
range(akhir) | Dari 0 sampai sebelum akhir |
range(mulai, akhir) | Dari mulai sampai sebelum akhir |
range(mulai, akhir, langkah) | Sama, tapi meloncat sejauh langkah |
Kenapa akhirnya tidak ikut?
Ini terasa aneh sekali di awal, tapi ada alasannya yang membuat hidup lebih mudah nanti:
range(5)menghasilkan tepat 5 angka. Jumlahnya langsung terbaca dari tulisannya.- Nomor indeks di Python juga dimulai dari 0, jadi
range(len(data))pas persis menyusuri seluruh isidatatanpa lebih tanpa kurang. - Rentang bisa disambung mulus:
range(0, 5)lalurange(5, 10)— tidak ada angka yang terlewat atau dobel.
Kalau kamu ingin menghitung 1 sampai 10 (bukan 0 sampai 9), tulis range(1, 11).
Angka 11 itu tidak ikut dicetak — ia hanya penanda berhenti.
Melihat isinya
print(range(5)) # range(0, 5) ← bukan daftar angkanya!
print(list(range(5))) # [0, 1, 2, 3, 4]
range tidak membuat daftar angka di memori; ia hanya menyimpan aturan “mulai dari sini,
berhenti di sini, loncat sekian”, lalu menghasilkan angkanya satu per satu saat diminta.
Itu sebabnya range(1_000_000_000) dibuat seketika dan tidak menghabiskan RAM.
Bungkus dengan list() hanya kalau kamu benar-benar ingin melihat isinya.
Pemakaian sehari-hari
# Mengulang sekian kali
for _ in range(3):
print("Halo")
# Menghitung naik
for i in range(1, 11):
print(i)
# Bilangan genap
for i in range(0, 21, 2):
print(i)
# Hitung mundur
for i in range(10, 0, -1):
print(i)
print("Mulai!")
# Menyusuri list lewat nomor indeks
data = ["a", "b", "c"]
for i in range(len(data)):
print(i, data[i]) # 0 a / 1 b / 2 c
Pola terakhir itu sah, tapi jarang dipakai di Python. Kalau kamu butuh item dan nomornya
sekaligus, enumerate() jauh lebih enak dibaca — materi berikutnya di fase ini.
Dua jebakan
for i in range(5, 1): # tidak mencetak apa-apa
print(i)
Tanpa langkah negatif, range hanya bisa naik. Karena 5 sudah lewat dari 1, hasilnya kosong —
dan Python tidak menganggap ini error, jadi programmu diam saja tanpa penjelasan.
for i in range(1.5): # TypeError
print(i)
range() hanya menerima bilangan bulat. Untuk deret desimal, hitung sendiri:
for i in range(10): nilai = i * 0.5.
Latihan: cetak segitiga bintang setinggi n baris (baris pertama satu bintang,
baris kedua dua, dan seterusnya). Lalu buat versi terbaliknya, dari lebar ke sempit,
dengan range berlangkah negatif.
Rangkuman ini sengaja dipangkas ke bagian yang dipakai di roadmap. Buka sumber aslinya saat kamu butuh detail lengkap atau referensi parameter.