Perulangan dengan for dan while di Python

Post image

Perulangan (loops) adalah salah satu konsep dasar yang sangat penting dalam pemrograman. Bayangkan Anda diminta untuk menulis nama 100 mahasiswa. Tanpa perulangan, Anda harus menulis perintah print sebanyak 100 kali. Dengan perulangan, Anda cukup menulis satu blok kode yang akan dijalankan berulang kali.

Di Python, ada dua jenis perulangan utama: for dan while. Kedua jenis perulangan ini memiliki tujuan yang sama yaitu mengeksekusi blok kode berulang kali, tetapi digunakan dalam konteks yang berbeda. Mari kita pelajari lebih detail tentang keduanya.

Perulangan For

Perulangan for digunakan untuk mengiterasi melalui urutan (seperti list, tuple, dictionary, set, atau string) atau objek yang dapat diiterasi (iterable). Struktur dasarnya adalah:

for variabel in sequence:
    # Blok kode yang akan dijalankan

Perulangan for akan berjalan sebanyak elemen yang ada dalam sequence. Pada setiap iterasi, variabel akan menyimpan nilai elemen saat ini dari sequence yang sedang diiterasi.

Contoh Dasar For Loop

Mari kita lihat contoh sederhana perulangan for:

buah = ["apel", "jeruk", "mangga", "pisang"]

for item in buah:
    print(item)
apel
jeruk
mangga
pisang

Pada contoh di atas, perulangan for mengiterasi melalui list buah dan mencetak setiap elemen satu per satu.

For Loop dengan Range()

Fungsi range() sering digunakan bersama dengan perulangan for untuk menghasilkan sequence angka. Ada tiga cara menggunakan range():

  1. range(stop) - Menghasilkan angka mulai dari 0 hingga stop-1
  2. range(start, stop) - Menghasilkan angka mulai dari start hingga stop-1
  3. range(start, stop, step) - Menghasilkan angka mulai dari start hingga stop-1, dengan interval step

Contoh:

# range(stop)
print("range(5):")
for i in range(5):
    print(i)

# range(start, stop)
print("\nrange(2, 7):")
for i in range(2, 7):
    print(i)

# range(start, stop, step)
print("\nrange(1, 10, 2):")
for i in range(1, 10, 2):
    print(i)
range(5):
0
1
2
3
4

range(2, 7):
2
3
4
5
6

range(1, 10, 2):
1
3
5
7
9

For Loop dengan String

String adalah sequence karakter, sehingga kita juga bisa mengiterasi setiap karakternya menggunakan perulangan for:

kata = "Python"

for huruf in kata:
    print(huruf)
P
y
t
h
o
n

For Loop dengan Dictionary

Saat mengiterasi dictionary, secara default perulangan for akan mengiterasi key-nya. Untuk mengakses key dan value sekaligus, kita bisa menggunakan method items():

siswa = {
    "nama": "Budi",
    "umur": 15,
    "kelas": "9A"
}

# Iterasi key
print("Iterasi key:")
for key in siswa:
    print(key)

# Iterasi key-value pairs
print("\nIterasi key-value:")
for key, value in siswa.items():
    print(f"{key}: {value}")
Iterasi key:
nama
umur
kelas

Iterasi key-value:
nama: Budi
umur: 15
kelas: 9A

Nested For Loop (Perulangan Bersarang)

Perulangan bersarang adalah perulangan di dalam perulangan. Ini sangat berguna untuk mengiterasi struktur data multi-dimensi seperti matriks:

# Perulangan bersarang untuk mencetak pola
for i in range(1, 4):
    for j in range(1, 4):
        print(f"({i},{j})", end=" ")
    print()  # Pindah ke baris berikutnya setelah baris dalam selesai
(1,1) (1,2) (1,3) 
(2,1) (2,2) (2,3) 
(3,1) (3,2) (3,3) 

For Loop dengan Enumerate()

Fungsi enumerate() berguna ketika Anda perlu menyimpan indeks elemen saat iterasi:

buah = ["apel", "jeruk", "mangga", "pisang"]

for index, buah in enumerate(buah):
    print(f"Indeks {index}: {buah}")
Indeks 0: apel
Indeks 1: jeruk
Indeks 2: mangga
Indeks 3: pisang

For Loop dengan Break dan Continue

  • break digunakan untuk keluar dari perulangan
  • continue digunakan untuk melewati iterasi saat ini dan melanjutkan ke iterasi berikutnya
# Contoh break
print("Contoh break:")
for i in range(1, 10):
    if i == 5:
        break
    print(i, end=" ")
print()

# Contoh continue
print("Contoh continue:")
for i in range(1, 10):
    if i % 2 == 0:  # Jika i adalah bilangan genap
        continue
    print(i, end=" ")
Contoh break:
1 2 3 4 
Contoh continue:
1 3 5 7 9 

For Loop dengan else

Perulangan for di Python bisa memiliki klausa else yang akan dijalankan setelah perulangan selesai (kecuali jika perulangan dihentikan oleh break):

# Perulangan for dengan else
for i in range(1, 6):
    print(i, end=" ")
else:
    print("\nPerulangan selesai!")
1 2 3 4 5 
Perulangan selesai!

List Comprehension

List comprehension adalah cara singkat dan elegan untuk membuat list berdasarkan list yang sudah ada. Ini merupakan alternatif yang lebih singkat dari perulangan for tradisional:

# Membuat list berisi kuadrat angka 1-5
# Cara tradisional
kuadrat = []
for i in range(1, 6):
    kuadrat.append(i ** 2)
print(f"Cara tradisional: {kuadrat}")

# Dengan list comprehension
kuadrat_lc = [i ** 2 for i in range(1, 6)]
print(f"List comprehension: {kuadrat_lc}")

# List comprehension dengan kondisi
genap = [x for x in range(1, 11) if x % 2 == 0]
print(f"Bilangan genap 1-10: {genap}")
Cara tradisional: [1, 4, 9, 16, 25]
List comprehension: [1, 4, 9, 16, 25]
Bilangan genap 1-10: [2, 4, 6, 8, 10]

Perulangan While

Perulangan while digunakan untuk mengeksekusi blok kode selama kondisi yang diberikan bernilai True. Struktur dasarnya adalah:

while condition:
    # Blok kode yang akan dijalankan

Berbeda dengan perulangan for yang berjalan untuk jumlah iterasi yang ditentukan, perulangan while akan terus berjalan selama kondisinya bernilai True dan akan berhenti ketika kondisinya bernilai False.

Contoh Dasar While Loop

Mari kita lihat contoh sederhana perulangan while:

counter = 1

while counter <= 5:
    print(counter)
    counter += 1  # Jangan lupa increment counter!
1
2
3
4
5

Pada contoh di atas, perulangan while akan terus berjalan selama nilai counter kurang dari atau sama dengan 5. Setiap iterasi, nilai counter bertambah 1. Ketika nilai counter menjadi 6, kondisi counter <= 5 bernilai False dan perulangan berhenti.

Penting: Jangan lupa untuk mengubah kondisi di dalam perulangan while agar suatu saat bernilai False. Jika tidak, akan terjadi infinite loop (perulangan tak terbatas).

While Loop dengan Break dan Continue

Seperti pada perulangan for, kita juga bisa menggunakan break dan continue pada perulangan while:

# Contoh break
print("Contoh break:")
i = 1
while i < 10:
    print(i, end=" ")
    if i == 5:
        break
    i += 1
print()

# Contoh continue
print("Contoh continue:")
i = 0
while i < 10:
    i += 1
    if i % 2 == 0:  # Jika i adalah bilangan genap
        continue
    print(i, end=" ")
Contoh break:
1 2 3 4 5 
Contoh continue:
1 3 5 7 9 

While Loop dengan else

Seperti perulangan for, perulangan while juga bisa memiliki klausa else yang akan dijalankan setelah perulangan selesai (kecuali jika perulangan dihentikan oleh break):

# Perulangan while dengan else
count = 1
while count <= 5:
    print(count, end=" ")
    count += 1
else:
    print("\nPerulangan selesai!")
1 2 3 4 5 
Perulangan selesai!

Infinite Loop

Perulangan tak terbatas (infinite loop) terjadi ketika kondisi dalam perulangan while selalu bernilai True. Meskipun biasanya dihindari, terkadang ini berguna untuk program yang harus berjalan terus-menerus, seperti game atau server:

# WARNING: Infinite loop, gunakan Ctrl+C untuk menghentikan
while True:
    command = input("Masukkan perintah (ketik 'keluar' untuk berhenti): ")
    if command.lower() == "keluar":
        break
    print(f"Anda memasukkan: {command}")

Contoh di atas adalah cara aman untuk membuat infinite loop dengan menyediakan cara untuk keluar dengan perintah “keluar”.

Memilih Antara For dan While

Meskipun kedua jenis perulangan dapat digunakan untuk mencapai hasil yang sama, ada beberapa panduan untuk memilih yang tepat:

Gunakan For Loop ketika Gunakan While Loop ketika
Anda tahu persis berapa kali perulangan harus dijalankan Anda tidak tahu berapa kali perulangan akan dijalankan
Anda ingin mengiterasi melalui sequence Anda perlu melakukan perulangan berdasarkan kondisi yang bisa berubah
Anda ingin mengakses setiap elemen dalam collection Anda perlu mengekspresikan kondisi yang kompleks
Anda perlu indeks dan nilai saat iterasi (dengan enumerate()) Anda perlu perulangan yang potensial tak terbatas

Contoh Aplikasi Praktis

1. Menghitung Faktorial

Faktorial dari n (dilambangkan n!) adalah hasil perkalian semua bilangan bulat positif kurang dari atau sama dengan n. Misalnya, 5! = 5 × 4 × 3 × 2 × 1 = 120.

# Menghitung faktorial dengan for loop
def faktorial_for(n):
    hasil = 1
    for i in range(1, n + 1):
        hasil *= i
    return hasil

# Menghitung faktorial dengan while loop
def faktorial_while(n):
    hasil = 1
    i = 1
    while i <= n:
        hasil *= i
        i += 1
    return hasil

# Uji kedua fungsi
angka = 5
print(f"Faktorial {angka} dengan for loop: {faktorial_for(angka)}")
print(f"Faktorial {angka} dengan while loop: {faktorial_while(angka)}")
Faktorial 5 dengan for loop: 120
Faktorial 5 dengan while loop: 120

2. Program Tebak Angka

import random

def tebak_angka():
    angka_rahasia = random.randint(1, 100)
    tebakan = 0
    percobaan = 0
    
    print("=== Game Tebak Angka ===")
    print("Saya telah memilih angka antara 1-100. Coba tebak!")
    
    while tebakan != angka_rahasia:
        try:
            tebakan = int(input("Masukkan tebakan Anda: "))
            percobaan += 1
            
            if tebakan < angka_rahasia:
                print("Terlalu rendah! Coba lagi.")
            elif tebakan > angka_rahasia:
                print("Terlalu tinggi! Coba lagi.")
            else:
                print(f"Selamat! Anda berhasil menebak angka {angka_rahasia} dalam {percobaan} percobaan.")
                
        except ValueError:
            print("Input tidak valid. Masukkan angka bulat.")
            
# Jalankan game (Tidak dijalankan dalam contoh ini)
# tebak_angka()

3. Fibonacci Sequence

Deret Fibonacci adalah deret angka di mana setiap angka adalah jumlah dari dua angka sebelumnya, dimulai dari 0 dan 1. Jadi deret Fibonacci dimulai: 0, 1, 1, 2, 3, 5, 8, 13, 21, …

# Menghasilkan n angka pertama dari deret Fibonacci
def fibonacci(n):
    fib_sequence = []
    a, b = 0, 1
    
    for _ in range(n):
        fib_sequence.append(a)
        a, b = b, a + b
        
    return fib_sequence

# Generate dan cetak 10 angka pertama dari deret Fibonacci
result = fibonacci(10)
print(f"10 angka pertama dari deret Fibonacci: {result}")

# Menghasilkan deret Fibonacci hingga batas tertentu
def fibonacci_until(limit):
    fib_sequence = []
    a, b = 0, 1
    
    while a <= limit:
        fib_sequence.append(a)
        a, b = b, a + b
        
    return fib_sequence

# Generate dan cetak deret Fibonacci hingga 100
result_until = fibonacci_until(100)
print(f"Deret Fibonacci hingga 100: {result_until}")
10 angka pertama dari deret Fibonacci: [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
Deret Fibonacci hingga 100: [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]

4. Mencari Bilangan Prima

# Memeriksa apakah sebuah angka adalah bilangan prima
def is_prima(n):
    if n <= 1:
        return False
    if n <= 3:
        return True
    if n % 2 == 0 or n % 3 == 0:
        return False
    
    i = 5
    while i * i <= n:
        if n % i == 0 or n % (i + 2) == 0:
            return False
        i += 6
        
    return True

# Menghasilkan semua bilangan prima dalam rentang tertentu
def prima_dalam_rentang(awal, akhir):
    prima = []
    
    for num in range(max(2, awal), akhir + 1):
        if is_prima(num):
            prima.append(num)
            
    return prima

# Cetak bilangan prima antara 10 dan 50
print(f"Bilangan prima antara 10 dan 50: {prima_dalam_rentang(10, 50)}")
Bilangan prima antara 10 dan 50: [11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47]

Tips Menggunakan Perulangan

No Tip Deskripsi
1 Hindari Infinite Loop Pastikan perulangan while memiliki kondisi yang suatu saat akan bernilai False
2 Gunakan enumerate() Untuk iterasi yang membutuhkan indeks dan nilai
3 Pertimbangkan list comprehension Lebih ringkas dan sering lebih cepat daripada perulangan for tradisional
4 Hindari mengubah sequence Jangan mengubah sequence yang sedang diiterasi oleh perulangan for
5 Gunakan else clause Memanfaatkan klausa else untuk kode yang perlu dijalankan setelah perulangan selesai
6 Hindari nested loop yang dalam Nested loop (terutama lebih dari dua level) bisa sulit dibaca dan tidak efisien
7 Gunakan break dan continue Untuk kontrol alur yang lebih baik dalam perulangan
8 Pilih loop yang tepat Gunakan for untuk iterasi sequence, while untuk kondisi yang berubah

Perbandingan For Loop vs While Loop

Aspek For Loop While Loop
Penggunaan Iterasi melalui sequence (list, tuple, string, etc.) Berjalan selama kondisi bernilai True
Jumlah iterasi Diketahui sebelumnya (berdasarkan panjang sequence) Tidak diketahui sebelumnya (bergantung pada kondisi)
Aplikasi Ideal untuk pemrosesan data dan iterasi koleksi Ideal untuk validasi input dan kondisi yang berubah-ubah
Kelebihan Lebih sederhana dan aman dari infinite loop Lebih fleksibel untuk kondisi yang kompleks
Kekurangan Kurang fleksibel untuk kondisi yang berubah-ubah Rawan infinite loop jika kondisi tidak diperbarui dengan benar

Kesimpulan

Perulangan adalah konsep fundamental dalam pemrograman yang memungkinkan kita mengeksekusi blok kode berulang kali. Di Python, perulangan for digunakan untuk iterasi melalui sequence dengan jumlah iterasi yang diketahui, sementara perulangan while digunakan untuk menjalankan kode selama kondisi tertentu terpenuhi.

Keduanya memiliki kelebihan dan aplikasi yang berbeda, dan memahami kapan harus menggunakan masing-masing akan membantu Anda menulis kode yang lebih efisien dan elegan.

Dalam artikel ini, kita telah mempelajari:

  • Sintaks dan cara kerja perulangan for dan while
  • Cara menggunakan range(), enumerate() dan berbagai sequence dalam perulangan
  • Penggunaan break, continue, dan klausa else dalam perulangan
  • List comprehension sebagai alternatif perulangan for
  • Contoh-contoh praktis penggunaan perulangan dalam berbagai kasus

Dengan memahami dan menguasai perulangan di Python, Anda telah mempelajari salah satu fondasi penting dalam pemrograman yang akan berguna di hampir semua program yang Anda tulis. Selamat berlatih dan happy coding!

comments powered by Disqus

You May Also Like