Soal 1Mana di antara berikut yang menjalankan blok if not value:?
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
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.
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
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.
| Tipe | Diperlakukan sebagai False | Diperlakukan sebagai True (contoh) |
|---|---|---|
| int / float | 0, 0.0 | 1, -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"} |
| None | None | (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
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.
# 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.
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")
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.
# 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:.
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")
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.
Cek Pemahaman
Jawab setiap pertanyaan satu per satu.
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?