Tutorial Python untuk bukan pengatur cara/Ungkapan Boolean: Perbezaan antara semakan
Kandungan dihapus Kandungan ditambah
→Examples: terjemahan |
→Nota berkaitan operator Boolean: kembang |
||
Baris 148:
Ungkapan Boolean boleh digunakan apabila anda mahu memeriksa dua atau lebih perkara sekaligus.
=== Nota berkaitan dengan operator Boolean ===
Satu kesilapan yang sering dibuat prang yang baru mengatur cara adalah menyalah faham bagaimana operator Boolean bekerja, yang berpunca daripada cara
>>> 'a' == ('a' or 'b')
Baris 169:
Pada peringkat ini, operator-operator <code>and</code> dan <code>or</code> kelihatan seperti rosak. Tidak masuk akal yang, buat dua ungkapan terdahulu, <code>'a'</code> sama dengan <code>'a'</code> atau <code>'b'</code> sementara <code>'b'</code> tidak. Tambah lagi, tidak masuk akal yang 'b' sama dengan <code>'a'</code> dan <code>'b'</code>. Namun, selepas meneliti apa yang dilakukan pentafsir terhadap operator-operator Boolean, keputusan yang dipaparkan sebenarnya membuat apa yang anda minta, hanya ia tidak sama dengan apa yang anda ''fikir'' yang anda minta.
Apabila pentafsir Python melihat ungkapan <code>or</code>, ia mengambil kenyataan pertama dan memeriksa sama ada ia <code>true</code> atau benar. Jika kenyataan pertama benar, Python memulangkan nilai objek tanpa memeriksa kenyataan kedua. Ini kerana untuk ungkapan <code>or</code>, keseluruhan kenyataan itu benar jika satu daripada nilainya benar; program tidak perlu memeriksa bahagian kedua. Sebaliknya, jika nilai pertama dinilai sebagai <code>false</code> atau palsu, Python akan memeriksa bahagian kedua dan memulangkan nilai itu. Bahagian kedua itu menentukan nilai benar keseluruhan ungkapan oleh sebab bahagian pertama palsu. "Kemalasan" pentafsir ini digelar ''short circuiting'' (litar pintas) dan adalah cara penilaian ungkapan Boolean yang sering terjumpa dalam banyak bahasa pengaturcaraan.
Sama juga, bagi ungkapan <code>and</code>, Python menggunakan jalan pintas bagi mempercepatkan evaluasi nilai benar. Jika kenyataan pertama itu palsu, pada kiraan Python kesemua ungkapan itu palsu dan ia memulangkan nilai tersebut (yakni, <code>false</code>). Sebaliknya jika kenyataan pertama itu benar, Python akan memeriksa kenyataan kedua dan memulangkan nilainya.
{| class="wikitable"
Baris 183:
|1 ||0
|-
|
|-
|Rentetan yang tak kosong ||Rentetan kosong
|-
|Senarai yang tak kosong ||Senarai kosong
|-
|Kamus yang tak kosong ||Kamus kosong
|}
Sekarang kita dapat memahami keputusan yang mengelirukan yang kita peroleh semasa menguji ungkapan-ungkapan Boolean sebelum ini. Mari kita tengok apa yang "dilihat" pentafsir Python semasa ia mengendalikan kod:
'''
>>>''' 'a' == ('a' or 'b')''' #
>>>''' 'a' == 'a' '''
True
'''
>>>''' 'b' == ('a' or 'b')''' #
# 'a'
#
>>>''' 'b' == 'a' '''
# jadi ungkapan menjadi False
False
'''
>>>''' 'a' == ('a' and 'b')''' #
# 'a'
#
#
# Memulangkan nilai kedua hasil ungkapan penuh: 'b'
>>>''' 'a' == 'b' ''' # rentetan 'a' tidak setara dengan rentetan 'b',
# jadi ungkapan adalah False
False
'''
>>>''' 'b' == ('a' and 'b')''' #
# 'a'
#
#
# Memulangkan nilai kedua hasil ungkapan penuh: 'b'
>>>''' 'b' == 'b' '''
#jadi ungkapan adalah True
True
So Python was really doing its job when it gave those apparently bogus results. As mentioned previously, the important thing is to recognize what value your boolean expression will return when it is evaluated, because it isn't always obvious.
|