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 % 2pada 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 menggunakananddanor. - Melupakan bahwa
not has_keyberarti 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 >= 60di 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 >= 12adalah False. Cabang pertama dilewati.b >= c?12 >= 12adalah True. Mencetak12.
Untuk a = 12, b = 12,
c = 5:
a >= b?12 >= 12adalah True.a >= c?12 >= 5adalah True.- Keduanya benar, jadi cetak
a, yaitu12. Selesai.
Kesalahan umum.
- Menggunakan
>bukan>=. Dengan seri tiga arah, tidak ada cabang yang cocok dan program jatuh keprint(c)bahkan ketikaayang 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.