Belajar dengan membaca secara berurutan

if / elif / else dan Percabangan Lanjutan

Pelajari percabangan if / elif / else di Python serta pola lanjutan seperti truthiness, ternary, dan isinstance.

Dasar-dasar if dan if not

if kondisi: menjalankan blok hanya ketika kondisinya True — ini konstruksi percabangan yang paling dasar. Untuk menegasikan sebuah kondisi, awali dengan not, seperti if not kondisi:.

not adalah operator yang membalik True dan False, jadi ungkapan seperti "kalau bukan…" atau "kalau tidak kosong" bisa ditulis dengan alami.

# if: berjalan hanya ketika kondisi True
is_logged_in = True
if is_logged_in:
    print("Halo")
# Output: Halo

# if not: membalik kondisi sebelum dievaluasi
is_logged_in = False
if not is_logged_in:
    print("Silakan login")
# Output: Silakan login

# Menggabungkan dengan ekspresi perbandingan
cart = []
if not cart:
    print("Keranjangmu kosong")
# Output: Keranjangmu kosong

Cek apakah seorang pengguna sudah memverifikasi email mereka.

① Definisikan email_verified = False.

② Pakai if email_verified: untuk mencetak "Terima kasih telah memakai layanan kami" ketika sudah terverifikasi.

③ Pakai if not email_verified: untuk mencetak "Silakan selesaikan verifikasi email" ketika belum terverifikasi.

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

Python Editor

Jalankan kode untuk melihat output

Menulis percabangan multi-cabang dengan elif dan else

Untuk menangani beberapa cabang, pakai elif dan else.

elif adalah singkatan dari else if — ketika kondisi if False, Python mencoba kondisi berikutnya, dan jika tidak ada yang cocok, else terakhir dijalankan.

Bagaimana if / elif / else dievaluasi
Mulaiif cond1blok 1elif cond2blok 2elseblok 3TrueFalseTrueFalseselainnya

Kondisi dievaluasi dari atas ke bawah. Hanya yang pertama menjadi True yang dijalankan, sisanya dilewati. Jika tidak ada yang True, else dijalankan.

# Pilih instruksi berdasarkan sinyal lalu lintas
signal = "YELLOW"

if signal == "GREEN":
    print("Jalan")
elif signal == "YELLOW":
    print("Lanjutkan dengan hati-hati")
elif signal == "RED":
    print("Berhenti")
else:
    print("Sinyal tidak dikenal")
# Output: Lanjutkan dengan hati-hati

Ubah pesan di layar berdasarkan role pengguna.

① Tetapkan role = "member".

② Cetak "Kamu bisa mengakses panel admin" ketika role == "admin", "Kamu bisa mengakses dashboard-mu" ketika role == "member", "Silakan login" ketika role == "guest", selainnya "Role tidak dikenal".

Python Editor

Jalankan kode untuk melihat output

elif dievaluasi dari atas ke bawah

Jika kamu menulis if age >= 0: ... elif age >= 20: ..., kondisi yang lebih luas datang lebih dulu, jadi yang berikutnya tidak akan pernah cocok. Pada percabangan multi-cabang, tulis kondisi yang lebih sempit (lebih ketat) lebih dulu.

Menggunakan nilai itu sendiri sebagai kondisi (truthiness)

Kondisi if tidak terbatas pada ekspresi perbandingan seperti == — kamu bisa meletakkan nilai itu sendiri di sana. Python akan mengonversinya ke bool di balik layar, memperlakukan "kosong" atau 0 sebagai False dan selainnya sebagai True.

Truthiness pada nilai
0 / "" /[] / {} / Nonekonversi boolFalsepunya isikonversi boolTrue
TipeDiperlakukan sebagai FalseDiperlakukan sebagai True (contoh)
int / float0, 0.01, -1, 3.14
str"" (string kosong)"a", "0" (string apa pun yang tidak kosong adalah True)
list / tuple / set[], (), set() (koleksi kosong)[1], (0,), {0}
dict{} (dict kosong){"key": "value"}
NoneNone(setiap nilai selain None)

Perilaku ini memungkinkanmu menulis pemeriksaan seperti "apakah input kosong?" atau "apakah ada sesuatu di keranjang?" dengan sangat ringkas.

Alih-alih if len(cart) > 0:, cukup tulis if cart: — artinya sama. Ini adalah gaya yang sangat Pythonic.

# Jangan jalankan pencarian ketika kata kunci kosong
search_query = ""
if search_query:
    print(f"Mencari: {search_query}")
else:
    print("Silakan masukkan kata kunci")
# Output: Silakan masukkan kata kunci

# Lanjut ke checkout ketika keranjang berisi setidaknya satu item
cart = ["apple", "bread"]
if cart:
    print(f"Memproses {len(cart)} item")
# Output: Memproses 2 item

Cek apakah alamat pengiriman sudah terdaftar.

① Tetapkan shipping_address = "" (string kosong).

② Pakai if shipping_address: — cetak "Siap dikirim" ketika ada alamat, selainnya cetak "Silakan daftarkan alamatmu".

③ Tetapkan ulang shipping_address menjadi sesuatu seperti "Jl. Sudirman No. 1, Jakarta" lalu jalankan if yang sama lagi untuk memastikan hasilnya berubah.

Python Editor

Jalankan kode untuk melihat output

Menulis if satu baris dengan operator ternary

Ketika yang kamu butuhkan hanya menetapkan salah satu dari dua nilai berdasarkan kondisi, kamu tidak perlu 4 baris if / else — kamu bisa melakukannya dalam satu baris. Ini disebut operator ternary (atau ekspresi kondisional). Bentuknya adalah nilai_jika_true if kondisi else nilai_jika_false.

Cara membaca operator ternary
nilai 1ifcondelsenilai 2
# 4 baris dengan if / else biasa
age = 25
if age >= 20:
    status = "dewasa"
else:
    status = "di bawah umur"

# Satu baris dengan operator ternary
status = "dewasa" if age >= 20 else "di bawah umur"
print(status)   # dewasa

Kuncinya adalah memakainya hanya untuk pilihan dua arah yang sederhana. Ketika kondisi atau nilainya panjang, atau kamu punya tiga atau lebih cabang, if / elif / else biasa lebih mudah dibaca.

Ubah label pengiriman berdasarkan total pesanan.

① Definisikan total_price = 3200.

② Memakai operator ternary, tetapkan "Gratis ongkir" ke shipping_label ketika total_price >= 5000, selainnya "Ongkir Rp 5000".

③ Cetak shipping_label.

Python Editor

Jalankan kode untuk melihat output

Pemeriksaan rentang bisa dirangkai langsung

Pemeriksaan rentang seperti "0 sampai 100 inklusif" bisa ditulis dengan merangkai operator perbandingan alih-alih memakai and. Hasilnya terbaca seperti pertidaksamaan matematika, sehingga maksudnya sangat jelas.

score = 78

# Memakai and
if score >= 0 and score <= 100:
    print("Skor valid")

# Bentuk rangkaian (artinya sama)
if 0 <= score <= 100:
    print("Skor valid")

Tentukan apakah skor tes berada dalam rentang valid (0–100).

① Definisikan score = 78.

② Memakai perbandingan berantai 0 <= score <= 100, cetak "Skor valid" ketika dalam rentang, selainnya "Di luar rentang".

③ Tetapkan ulang score = 120 dan jalankan pemeriksaan yang sama lagi.

Python Editor

Jalankan kode untuk melihat output

Memeriksa tipe dan nilai (isinstance dan is None)

Ketika kamu ingin memeriksa tipe nilai yang dipegang sebuah variabel, pakai isinstance(nilai, tipe). Teruskan nilainya dulu, lalu tipenya — jika nilainya merupakan instance dari tipe tersebut, fungsinya mengembalikan True.

price = 980
user_name = "budi"

print(isinstance(price, int))      # True
print(isinstance(user_name, str))  # True
print(isinstance(price, str))      # False

# Gabungkan dengan if untuk menghitung hanya ketika berupa angka
if isinstance(price, int) and price > 0:
    tax_included = int(price * 1.1)
    print(tax_included)   # 1078

Apa itu None?

None adalah nilai khusus Python yang berarti "tidak ada nilai". Ia merepresentasikan hal seperti "hasil yang belum diambil", "kondisi belum terinisialisasi", atau "apa yang dikembalikan fungsi ketika tidak mengembalikan apa-apa". Ia adalah satu-satunya nilai yang berarti "tidak ada apa-apa", berbeda dari 0 atau string kosong.

Bagaimana None berbeda dari nilai lain
0(angka)""(string kosong)[](list kosong)None(tanpa nilai)
# Fungsi yang tidak mengembalikan apa-apa secara implisit mengembalikan None
def greet():
    print("halo")

result = greet()      # "halo" dicetak
print(result)         # None

# Nilai awal yang berarti "belum diputuskan"
selected_user = None
print(selected_user)  # None

Untuk memeriksa apakah sebuah nilai adalah None, cara yang Pythonic adalah is None alih-alih ==. Karena None adalah objek tunggal yang unik di program, membandingkan apakah dua referensi menunjuk ke objek yang sama di memori dengan is membuat maksudnya lebih jelas.

# Info pengguna dari API (anggap belum diambil)
user = None

if user is None:
    print("Info pengguna belum dimuat")
else:
    print(f"Halo, {user}")
# Output: Info pengguna belum dimuat

# Untuk cek "bukan None", pakai `is not None`
score = 0
if score is not None:
    print(f"Skor: {score}")   # Skor: 0

0 dan None adalah hal yang berbeda

Menulis if score: akan memperlakukan score == 0 sebagai False juga. Ketika kamu perlu membedakan "belum diisi (None)" dari "0 poin", periksa secara eksplisit dengan if score is None: atau if score is not None:.

Periksa keberadaan dan tipe usia pengguna yang diambil dari API.

① Definisikan user_age = None.

② Jika user_age is None, cetak "Usia belum terdaftar"; selainnya, jika isinstance(user_age, int) adalah True, cetak nilai user_age.

③ Tetapkan ulang user_age = 29 dan jalankan pemeriksaan yang sama lagi.

Python Editor

Jalankan kode untuk melihat output

Memeriksa isi koleksi dengan in / not in

Untuk menguji apakah sebuah nilai ada di dalam list, pakai nilai in koleksi. Kebalikannya — "tidak ada" — adalah nilai not in koleksi. Bekerja untuk list, tuple, set, dan string, dan untuk dict ia memeriksa key-nya.

allowed_roles = ["admin", "editor", "member"]
current_role = "member"

if current_role in allowed_roles:
    print("Akses diberikan")
else:
    print("Akses ditolak")
# Output: Akses diberikan

# Cek apakah substring muncul dalam string
if "error" in "connection error: timeout":
    print("Mendeteksi baris error")

# Untuk dict, `in` memeriksa key-nya
user = {"name": "budi", "role": "admin"}
if "email" not in user:
    print("Email belum terdaftar")

Cek status publikasi sebuah postingan blog.

① Definisikan published_slugs = ["python-intro", "sql-basics", "git-tips"].

② Definisikan target = "git-tips".

③ Jika target ada di published_slugs, cetak "Terbit"; selainnya cetak "Draft".

④ Ubah target menjadi "draft-post" dan jalankan pemeriksaan yang sama lagi.

Python Editor

Jalankan kode untuk melihat output

Di artikel ini, kita membahas percabangan lanjutan dengan dasar-dasar if / if not, logika multi-cabang dengan elif / else, truthiness yang memperlakukan nilai kosong dan 0 sebagai False, operator ternary nilai_1 if kondisi else nilai_2, pemeriksaan tipe dan nilai dengan isinstance dan is None, serta pemeriksaan koleksi dengan in / not in.

Di artikel berikutnya, kita akan belajar all() / any(), yang memungkinkanmu memeriksa apakah setiap elemen dalam list memenuhi sebuah kondisi dalam satu panggilan.

QUIZ

Cek Pemahaman

Jawab setiap pertanyaan satu per satu.

Soal 1Mana di antara berikut yang menjalankan blok if not value:?

Soal 2Apa yang dicetak kode ini?
age = 18
status = "dewasa" if age >= 20 else "di bawah umur"
print(status)

Soal 3Mana di antara berikut yang merupakan cara paling direkomendasikan untuk memeriksa apakah sebuah nilai adalah None?