Tutorial Python untuk bukan pengatur cara/Ungkapan Boolean: Perbezaan antara semakan

Kandungan dihapus Kandungan ditambah
Algazel (bincang | sumb.)
Nota tentang percampuran bahasa dalam kod
Algazel (bincang | sumb.)
kembang
Baris 26:
8 True
9 False
{{Nota penterjemah|Python hanya pandai berbahasa Inggeris. Jadi anda perlu menggunakan "and" dan bukan "dan" dalam kod ungakapan anda. Juga Python akan memulangkan nilai ungkapan Boolean dalam bahasa Inggeris: "True" (benar) atau "False" (palsu)
}}
 
{{Nota penterjemahXNote|Python hanya pandai berbahasa Inggeris. Jadi anda perlu menggunakan "and" dan bukan "dan" dalam kod ungakapan anda. Juga Python akan memulangkan nilai ungkapan Boolean dalam bahasa Inggeris: "True" (benar) atau "False" (palsu)}}
Apa yang berlaku? Program ini terdiri daripada kenyataan <code>print</code> yang aneh. Setiap kenyataan <code>print</code> mencetak sebuah nombor dan sebuah ungkapan. Nombor membantu saya menjejak kenyataan mana yang sedang saya guna. Perhatikan bagaimana kenyataan berakhir sama ada dengan <code>False</code> atau <code>True</code>. Dengan Python, <tt>false</tt> juga boleh ditulis sebagai 0 dan <tt>true</tt> sebagai 1.
 
Apa yang berlaku? Program ini terdiri daripada kenyataan <code>print</code> yang aneh. Setiap kenyataan <code>print</code> mencetak sebuah nombor dan sebuah ungkapan. Nombor membantu saya menjejak kenyataan mana yang sedang saya guna. Perhatikan bagaimana kenyataan berakhir sama ada dengan <code>False</code> atau <code>True</code>. Dengan Python, <ttcode>false</ttcode> juga boleh ditulis sebagai 0 dan <ttcode>true</ttcode> sebagai 1.
<!-- For example: -->
<!-- <source lang="python"> -->
Baris 53:
</source>
 
mencetak masing-masing <code>True</code> dan <code>False</code> seperti yang disangkakan oleh sebab kenyataan pertama benar dan yang kedua palsu. Cetakan ketiga, <code>print 3, a == 6 and b == 7</code>, berlainan sedikit. Operator <code>and</code> membawa makna jika kedua-dua kenyataan sebelum dan kenyatannkenyataan selepas benar, seluruh ungkapan itu benar, dan jika tidak, ia bermakna seluruh ungkapan itu palsu. Baris berikutnya, <code>print 4, a == 7 and b == 7</code>, menunjukkan bagaimana jika sebahagian ungkapan <code>and</code> itu palsu, seluruh perkara itu palsu. Fiil <code>and</code> dapat diringkaskan begini:
 
{| class="wikitable"
Baris 87:
|}
 
Dua baris berikutan itu, <code>print 6, a == 7 or b == 7</code> dan <code>print 7, a == 7 or b == 6</code>, mengguna operator <code>or</code>. Operator <code>or</code> memulangkan <ttcode>true</ttcode> jika ungkapan pertama benar, dan jika ungkapan kedua benar atau kedua-duanya benar. Jika kedua-duanya tidak benar (yakni, palsu), ia akan memulangkan <ttcode>false</ttcode>. Ini rajahnya:
 
{| class="wikitable"
Baris 106:
|}
 
Perhatikan bahawa sekiranya ungkapan pertama itu <ttcode>true</ttcode> Python tidak akan memeriksa ungkapan kedua oleh sebab ia tahu bahawa seluruh ungkapan itu benar. Ini dapat dilakukan kerana <code>or</code> itu benar jika sekurang-kurangnya separuh ungkapan itu benar. Bahagian pertama itu benar, jadi bahagian kedua mungkin palsu atau benar, akan tetapi seluruh ungkapan itu tetap benar.
 
Dua baris berikutnya, <code>print 8, not (a == 7 and b == 6)</code> dan <code>print 9, not a == 7 and b == 6</code>, menunjukkan bahawa tanda kurungan boleh digunakan untuk mengumpul ungkapan dan memaksa sebahagiannya dinilai dahulu. Perhatikan bahawa tanda kurungan menukar ungkapan daripada <ttcode>false</ttcode> kekepada <ttcode>true</ttcode>. Ini berlaku kerana tanda kurungan memaksa <code>not</code> dikenakan terhadap seluruh ungkapan dan tidak hanya pada bahagian <code>a == 7</code>.
 
Ini satu contoh penggunaan ungkapan boolean:
Baris 140:
Padanan Pertama: Hayat
 
{{Nota penterjemahXNote|Anda sudah tentu dapat lihat bahawa bahasa dalam kod di atas bercampur aduk bahasa Inggeris dan bahasa Melayu. Bahagian yang dikekalkan dalam bahasa Inggeris diguna oleh Python dan setakat ini hanya pemboleh ubah (''variable'') dan <code>string</code> dalam kenyataan <code>print</code> dialih bahasa. Kaedah ini digunakan dalam buku ini.}}
 
Program ini terlaksana dengan ia sentiasa mencari padanan selagi <code>while count < len(salinan) dan salinan[count] tidak sama dengan sebelum</code>. Apabila sama ada <code>count</code> lebih daripada indeks terakhir <code>salinan</code> ataupun padanan ditemui justeru <code>and</code> tidak lagi benar dan gelung berhenti atau keluar. Operator <code>if</code> hanya memeriksa agar memastikan yang <code>while</code> keluar kerana tiada padanan ditemui.
Baris 148:
Ungkapan boolen boleh digunakan apabila anda mahu memeriksa dua atau lebih perkara sekaligus.
 
=== ANota noteberkaitan onoperator Boolean Operators ===
ASatu commonkesilapan mistakeyang forsering peopledibuat newprang toyang programmingbaru ismengatur a misunderstandingcara ofadalah themenyalah wayfaham thatbagaimana booleanoperator operatorsBoolean worksbekerja, whichyang stemsberpunca fromdaripada thecara waypnetafsir thePython pythonmembaca interpreterungkapan-ungkapan reads these expressionsini. For exampleMisalnya, afterselepas initiallymempelajari learningkenyataan-kenyataan about "<code>and</code> "dan and "<code>or" statements</code>, onesesorang mightitu assumemungkin thatmembuat thetanggapan expressionbahawa ungkapan <code>x == ('a' or 'b')</code> wouldakan checkmemeriksa tosama seeada ifpemboleh the variableubah <code>x</code> wassama equivalentdengan to one of the stringsrentetan <code>'a'</code> oratau <code>'b'</code>. ThisIa istidak not sobegitu. ToUntuk seemelihat whatapa I'myang talkingsaya aboutmaksudkan, startmulakan ansesi interactiveinteraktif sessiondengan with the interpreter andpentafsir enterdan themasukkan followingungkapan-ungkapan expressionsberikut:
 
>>> 'a' == ('a' or 'b')
Baris 156:
>>> 'b' == ('a' and 'b')
 
Dan ini hasil yang kurang intuitifnya:
And this will be the unintuitive result:
 
>>>''' 'a' == ('a' or 'b')'''
Baris 167:
True
 
AtPada thisperingkat pointini, theoperator-operator <code>and</code> anddan <code>or</code> operatorskelihatan seemseperti to be brokenrosak. It doesn'tTidak makemasuk senseakal thatyang, forbuat thedua firstungkapan two expressionsterdahulu, <code>'a'</code> issama equivalent todengan <code>'a'</code> oratau <code>'b'</code> whilesementara <code>'b'</code> is nottidak. FurthermoreTambah lagi, it doesn't maketidak anymasuk senseakal thatyang 'b' issama equivalentdengan to <code>'a'</code> anddan <code>'b'</code>. AfterNamun, selepas examiningmeneliti whatapa theyang interpreterdilakukan doespentafsir withterhadap booleanoperator-operator operatorsBoolean, thesekeputusan resultsyang dodipaparkan insebenarnya factmembuat exactlyapa whatyang youanda are asking of themminta, it'shanya justia nottidak thesama samedengan asapa whatyang youanda think''fikir'' youyang areanda askingminta.
 
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.
When the Python interpreter looks at an <code>or</code> expression, it takes the first statement and checks to see if it is true. If the first statement is true, then Python returns that object's value without checking the second statement. This is because for an <code>or</code> expression, the whole thing is true if one of the values is true; the program does not need to bother with the second statement. On the other hand, if the first value is evaluated as false Python checks the second half and returns that value. That second half determines the truth value of the whole expression since the first half was false. This "laziness" on the part of the interpreter is called "short circuiting" and is a common way of evaluating boolean expressions in many programming languages.
 
Similarly, for an <code>and</code> expression, Python uses a short circuit technique to speed truth value evaluation. If the first statement is false then the whole thing must be false, so it returns that value. Otherwise if the first value is true it checks the second and returns that value.