
Memahami Percabangan (if, elif, else) di Python
Percabangan atau conditional statements adalah salah satu konsep fundamental dalam pemrograman.
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
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.
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.
Fungsi range()
sering digunakan bersama dengan perulangan for
untuk menghasilkan sequence angka. Ada tiga cara menggunakan range()
:
range(stop)
- Menghasilkan angka mulai dari 0 hingga stop-1range(start, stop)
- Menghasilkan angka mulai dari start hingga stop-1range(start, stop, step)
- Menghasilkan angka mulai dari start hingga stop-1, dengan interval stepContoh:
# 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
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
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
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)
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
break
digunakan untuk keluar dari perulangancontinue
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
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 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
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
.
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 bernilaiFalse
. Jika tidak, akan terjadi infinite loop (perulangan tak terbatas).
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
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!
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”.
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 |
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
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()
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]
# 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]
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 |
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 |
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:
for
dan while
range()
, enumerate()
dan berbagai sequence dalam perulanganbreak
, continue
, dan klausa else
dalam perulanganfor
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!
Percabangan atau conditional statements adalah salah satu konsep fundamental dalam pemrograman.
Dalam pemrograman, operator adalah simbol khusus yang digunakan untuk melakukan operasi pada variabel dan nilai.
Struktur data adalah cara kita mengorganisir dan menyimpan data dalam program.
Pernahkah Anda mengalami situasi ini: Anda bekerja pada beberapa proyek Python yang membutuhkan versi package yang berbeda?