17. Boolean logic secara mendalam — Solusi Pekerjaan Rumah
File solusi .py ada di
exercises/17/homework/solutions/.
Soal 1 — Warna default
Soal. Jatuh kembali ke "blue" ketika
fav adalah None.
Solusi.
fav = None # try a real colour here too
colour = fav or "blue"
print("Your colour is " + colour)Dengan fav = None, ia mencetak
Your colour is blue; dengan fav = "red", ia
mencetak Your colour is red.
Kesalahan umum.
- Menulis
if fav is None: colour = "blue"elsecolour = fav. Benar, tapifav or "blue"adalah idiom yang lebih pendek dan layak diketahui.
Soal 2 — Tabel truthy
Soal. Tunjukkan apakah setiap nilai truthy
menggunakan bool(value).
Cara memikirkannya. bool() mengkonversi
nilai apa pun ke True atau False sesuai aturan
truthy/falsy Python.
Solusi.
print(0, bool(0)) # 0 False
print("", bool("")) # False
print(None, bool(None)) # None False
print(False, bool(False)) # False False
print("hi", bool("hi")) # hi True
print(1, bool(1)) # 1 TrueDalam Python, 0 dan "" adalah
falsy.
Soal 3 — Pembagian terjaga
Soal. Cetak rata-rata hanya ketika
count di atas nol.
Solusi.
total = 90
count = 0 # try a real number too
if count > 0 and total / count > 0:
print("Average: " + str(total / count))
else:
print("no data")Dengan count = 0, pengujian count > 0
adalah False, sehingga Python melakukan short-circuit dan melewati
pembagian, mencetak no data. Dengan count = 3,
ia mencetak Average: 30.0.
Kesalahan umum.
- Menulis
if total / count ...tanpa penjagacount > 0. Pembagian kemudian berjalan bahkan ketikacountadalah0— itu menimbulkanZeroDivisionError. Penjaga mencegahnya.
Tantangan — Nilai pertama yang ada
Soal. Cetak yang pertama dari a,
b, c yang bukan None.
Solusi.
a = None
b = None
c = "third"
print(a or b or c or "none") # thirdor berjalan dari kiri ke kanan dan mengembalikan nilai
truthy pertama, sehingga rantai mendarat pada variable pertama yang
menyimpan sesuatu. Jika ketiganya None, ia mengembalikan
"none" terakhir.
Kesalahan umum.
- Tangga
if/elifyang panjang memeriksa masing-masing untukNone. Benar, tapi rantaiormelakukannya dalam satu baris.
Selesai?
Kamu sekarang tahu bahwa and/or
mengembalikan nilai, melakukan short-circuit, dan menggerakkan trik
x or default. Selanjutnya adalah Loop,
cara lain untuk membuat program melakukan lebih dari hal yang sama
setiap saat.