← Semua pembelajaran / Python Dasar
Fase 3 · Perulangan

range() — Deretan Angka

Kecil tapi dipakai di hampir setiap perulangan. Yang perlu diluruskan sekali di awal: batas akhirnya tidak ikut.

Sumber asli docs.python.org Resmi Rangkuman ~4 menit baca

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
BentukArti
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:

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.