16. if / elif / else — Solusi Pekerjaan Rumah

File solusi .py ada di exercises/16/homework/solutions/.

Soal 1 — Genap atau ganjil

Soal. Baca sebuah angka; cetak even atau odd.

Cara memikirkannya. n % 2 adalah 0 untuk genap dan 1 untuk ganjil (bilangan negatif memberikan -1 atau 1, tapi == 0 tetap berfungsi). Satu if/else.

Solusi.

n = int(input("Enter a whole number: "))

if n % 2 == 0:
    print("even")
else:
    print("odd")

Kesalahan umum.

  • Menulis if n % 2 = 0. Satu = adalah penugasan; pemeriksaan membutuhkan ==.
  • Melupakan int(). n % 2 pada sebuah string adalah kesalahan.

Soal 2 — Gerbang level Roblox

Soal. Pesan berbeda tergantung pada persyaratan mana yang gagal dipenuhi pemain.

Cara memikirkannya. Dua boolean memberikan empat kombinasi, tapi hanya tiga yang buruk. Tuliskan masing-masing dengan elif:

  • keduanya ok → masuk
  • level rendah, kunci ok → "Level too low."
  • level ok, kunci tidak ada → "Missing the key."
  • keduanya salah → "Level too low and missing the key."

Urutan cabang penting: tangani kegagalan yang paling spesifik terlebih dahulu.

Solusi.

level = 12
has_key = True

if level >= 10 and has_key:
    print("You can enter the dungeon.")
elif level < 10 and not has_key:
    print("Level too low and missing the key.")
elif level < 10:
    print("Level too low.")
else:
    print("Missing the key.")

Kegagalan gabungan diperiksa sebelum yang tunggal. Jika elif level < 10 datang lebih dulu, ia akan menelan kasus gabungan, sehingga pesan itu tidak pernah muncul.

Kesalahan umum.

  • Menggunakan && atau ||. Python menggunakan and dan or.
  • Melupakan bahwa not has_key berarti kunci tidak ada. Katakan keras-keras: "not has key".

Soal 3 — Huruf nilai

Soal. A/B/C/D/F standar berdasarkan batas nilai.

Cara memikirkannya. Setiap cabang memeriksa batas tertinggi yang belum tertangkap. Dengan elif, setelah satu cabang cocok, sisanya dilewati.

Solusi.

score = int(input("Score (0-100): "))

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")

Kesalahan umum.

  • Mendaftarkan kondisi dari rendah ke tinggi. Menempatkan score >= 60 di atas akan menangkap setiap nilai lulus, termasuk 95, dan memberikan semuanya nilai D.
  • Menggunakan > bukan >=. Nilai tepat 90 seharusnya A, bukan B.

Tantangan — Terbesar dari tiga

Soal. Tiga angka, tanpa max(), tanpa loop. Cetak yang terbesar.

Cara memikirkannya. Bandingkan berpasangan. a >= b dan a >= c berarti a adalah yang terbesar, atau seri. >= (bukan >) menangani seri: jika a == b, cabang pertama menang dan mencetak a.

Solusi.

a = 7
b = 12
c = 12

if a >= b and a >= c:
    print(a)
elif b >= c:
    print(b)
else:
    print(c)

Telusuri a = 7, b = 12, c = 12:

  • a >= b? 7 >= 12 adalah False. Cabang pertama dilewati.
  • b >= c? 12 >= 12 adalah True. Mencetak 12.

Untuk a = 12, b = 12, c = 5:

  • a >= b? 12 >= 12 adalah True.
  • a >= c? 12 >= 5 adalah True.
  • Keduanya benar, jadi cetak a, yaitu 12. Selesai.

Kesalahan umum.

  • Menggunakan > bukan >=. Dengan seri tiga arah, tidak ada cabang yang cocok dan program jatuh ke print(c) bahkan ketika a yang memegang nilai maksimum. Nilainya benar, tapi logikanya kacau.

Selesai?

Bab berikutnya, Boolean logic secara mendalam, menggali apa yang sebenarnya dilakukan and, or, dan not. Setelah itu datang loop — cara lain untuk membuat program melakukan sesuatu yang berbeda setiap kali dijalankan.