16. if / elif / else

Sejauh ini, program selalu berjalan dengan cara yang sama setiap kali. Bab ini menambahkan sebuah kondisi: sebuah pertanyaan yang dijawab True atau False. Jawaban itu menentukan blok kode mana yang dijalankan.

Membandingkan nilai

Kondisi dibangun dari operator perbandingan. Setiap operator membandingkan dua nilai dan mengembalikan sebuah boolean.

Operator Arti
== sama dengan
!= tidak sama dengan
< kurang dari
> lebih dari
<= kurang dari atau sama dengan
>= lebih dari atau sama dengan
print(7 == 7)     # True
print(7 == 8)     # False
print("a" == "A") # False  (case matters)
print(7 != 8)     # True
print(3 < 5)      # True
print(3 >= 3)     # True

Operator kesamaan adalah == (dua tanda sama). Satu = adalah penugasan — ia mengubah sebuah variable. Jadi if x = 7 adalah kesalahan sintaksis; Python menolak untuk menjalankannya.

Pernyataan if

if menjalankan sebuah blok kode hanya ketika kondisinya benar.

age = 16
if age >= 18:
    print("You can vote.")

Baca dari kiri ke kanan: jika umur minimal 18, cetak pesannya. Titik dua di akhir baris if wajib ada. Isi blok harus diindentasi — empat spasi adalah standarnya. Python menggunakan indentasi itu sendiri untuk mengetahui di mana blok berakhir. Tidak ada kata kunci end.

else untuk kasus lainnya

else berjalan ketika kondisinya salah. Bersama if, ia mencakup kedua kemungkinan tepat satu kali:

age = 16
if age >= 18:
    print("You can vote.")
else:
    print("Not old enough to vote yet.")

Tepat satu baris print yang berjalan, tidak pernah keduanya.

elif untuk rantai kondisi

Untuk lebih dari dua kasus, sambungkan dengan elif (singkatan dari "else if"). Python mencoba setiap kondisi secara berurutan dan berhenti pada yang pertama bernilai benar:

score = 73
if score >= 90:
    print("Grade: A")
elif score >= 80:
    print("Grade: B")
elif score >= 70:
    print("Grade: C")
elif score >= 60:
    print("Grade: D")
else:
    print("Grade: F")

Urutan sangat penting: Python mengambil kecocokan pertama. Dengan score >= 60 di atas, setiap nilai lulus akan mendapat D — tidak ada yang akan melihat A, B, atau C.

Buka exercises/16/01-grade.py. Ubah nilai score dan jalankan. Coba nilai tepat di batas (60, 70, 80, 90) untuk memastikan >= menyertakannya.

Menggabungkan kondisi dengan and, or, not

Terkadang satu perbandingan saja tidak cukup. Python memiliki tiga operator logika yang menggabungkan boolean:

Operator Arti
and benar jika kedua sisi benar
or benar jika salah satu sisi benar
not membalik benar menjadi salah dan salah menjadi benar
level = 12
has_key = True

if level >= 10 and has_key:
    print("You can enter the dungeon.")

if level < 10 or not has_key:
    print("You are blocked.")

Tuliskan sebagai kata-kata. Python tidak menggunakan &&, ||, atau !.

Truthy dan falsy

Kondisi di atas semuanya menghasilkan boolean nyata, tetapi if menerima nilai apa pun. Aturan Python:

  • None, False, 0, 0.0, "", dan koleksi kosong adalah falsyif melewati blok tersebut.
  • Semua yang lain adalah truthy.

Dalam Python, 0 dan "" adalah falsy. Memeriksa apakah sebuah variable memiliki nilai:

name = input()
if name:
    print("Hello, " + name)
else:
    print("No name was entered.")

Buka exercises/16/02-truthy.py dan jalankan. Bandingkan outputnya dengan apa yang kamu harapkan. Dalam Python, 0 dan "" adalah falsy — ingat itu.

Pekerjaan Rumah

Soal 1 — Genap atau ganjil

Buka exercises/16/homework/01-even-or-odd.py. Minta pengguna memasukkan sebuah angka. Cetak even atau odd berdasarkan apakah n % 2 bernilai 0.

Soal 2 — Gerbang level Roblox

Buka exercises/16/homework/02-level-gate.py. Dua variable ada di bagian atas: level (sebuah angka) dan has_key (sebuah boolean). Cetak You can enter the dungeon. hanya ketika pemain minimal level 10 dan memiliki kunci. Jika tidak, cetak salah satu dari:

  • Level too low. (jika level saja yang menjadi masalah),
  • Missing the key. (jika level sudah cukup tapi kunci tidak ada),
  • Level too low and missing the key. (jika keduanya salah).

Soal 3 — Huruf nilai

Buka exercises/16/homework/03-grade-letter.py. Minta pengguna memasukkan nilai (0 sampai 100). Cetak huruf nilai A, B, C, D, atau F menggunakan batas yang sama seperti contoh di bab ini.

Tantangan — Terbesar dari tiga

Buka exercises/16/homework/04-largest-of-three.py. Tiga variable menyimpan tiga angka. Cetak yang terbesar, menggunakan if dan operator perbandingan — tanpa loop, tanpa list, tanpa max(). Tantangannya: tangani seri dengan bersih (jika dua angka seri sebagai yang terbesar, cetak salah satu dari keduanya).

Buntu atau sudah selesai? Buka halaman solusi pekerjaan rumah.