Ачааллж байна...
Бид int, float, string гурвыг үзлээ — тоо, тоо, бичвэр. Өнөөдөр танилцах дөрөв дэх төрөл нь өмнөх гурваасаа тэс өөр амьтан юм. Int-ийн боломжит утгууд төгсгөлгүй олон (ямар ч бүхэл тоо), string-ийнх бүр ч олон (ямар ч бичвэр). Харин өнөөдрийн төрөл бүх ертөнцөөрөө хоёрхон утгатай: True (үнэн) ба False (худал). Энэ төрлийг bool гэдэг (дуудлага нь "буул") — 1800-аад оны үед үнэн-худлын логикийг математик болгож хөгжүүлсэн Английн математикч George Boole-ийн нэрээр нэрлэгдсэн юм. Тэр хүн компьютер зохион бүтээгдэхээс зуун жилийн өмнө амьдарч байсан ч, түүний "бүх зүйлийг үнэн-худал хоёрт буулгах" санаа нь өнөөдрийн компьютерын сэтгэлгээний яг гол цөм болсон түүхтэй.
"Хоёрхон утгатай төрөл юунд хэрэгтэй юм бэ" гэж эргэлзэх нь зөв асуулт. Хариулт нь: шийдвэрт. Дараагийн бүлэгт бид программдаа "хэрэв ингэвэл — тэг, үгүй бол — өөрөөр" гэсэн салаа зам оруулж сурна: нууц үг зөв бол нэвтрүүл, буруу бол татгалз; оноо хүрсэн бол ялалт зарла, хүрээгүй бол үргэлжлүүл. Ямар ч салаа замын уулзвар дээр программ эцсийн эцэст ганцхан асуултад хариулдаг: "энэ нөхцөл үнэн үү, худал уу?" Тэр хариултыг тээдэг төрөл нь яг bool юм. Өөрөөр хэлбэл өнөөдрийн жижигхэн хичээл бол Бүлэг 6-гийн том хаалганы түлхүүр — түлхүүр гэдэг жижиг байдаг биз дээ.
Bool-ийг ингэж төсөөлөөрэй: гэрлийн унтраалга. Өрөөний унтраалга хоёрхон төлөвтэй — асаалттай, унтраалттай. "Хагас асаалттай", "бараг унтраалттай", "мэдэхгүй" гэсэн төлөв унтраалганд байхгүй: үргэлж яг аль нэг нь. Мөн унтраалгын хариулт хэзээ ч тайлбар шаарддаггүй — харахад л төлөв нь тодорхой. Bool яг ийм: True эсвэл False, гуравдахь хувилбаргүй, дундын утгагүй. Танай гэрт ийм "унтраалганууд" аль хэдийн олон бий гэдгийг бодоод үзээрэй: утасны нислэгийн горим (асаалттай/унтраалттай), дуугүй горим, Wi-Fi. Апп-ын тохиргооны цонхон дээрх шилждэг товчлуур бүрийн ард программын дотор яг нэг bool утгатай variable сууж байдаг — та тохиргоо асаахад хэн нэгний бичсэн код тэнд wifi_asaaltai = True гэж хийж байгаа юм.
Унтраалгаа кодод буулгая:
python
duugui_gorim = True
print(duugui_gorim)Үр дүн:
TrueХоёр зүйлийг сайн ажиглаарай. Нэгд: True хашилтгүй — учир нь энэ string биш. Хоёрт: True гэдэг үг том Т үсгээр эхэлж, үлдсэн нь жижгээр (True, False — яг ийм хэлбэрээр). Энэ хоёр нөхцөл зөрчигдвөл юу болохыг алдаануудын хэсэгт нүдээрээ үзнэ. True бол Python-ы өөрийнх нь мэддэг тусгай үг — print шиг "нэрээр нь дуудахад ойлгодог" зүйлсийн нэг бөгөөд утга нь "үнэн" гэсэн санаа өөрөө юм. Бидний хайрцагны хэлээр: duugui_gorim хайрцганд "үнэн" гэсэн ойлголт өөрөө хийгдлээ — бичвэр ч биш, тоо ч биш, гуравдагч ертөнцийн иргэн.
Хоёр дахь жишээ: амьдралын өгүүлбэрүүд bool болох нь. Bool-ийн жинхэнэ эх сурвалж бол баталгаат өгүүлбэрүүд юм. Эргэн тойрныхоо баталгаануудыг үнэлж үзье:
python
gadaa_haranhui = True
bi_ongots_unaj_yavaa = False
python_surch_baigaa = True
print(gadaa_haranhui)
print(bi_ongots_unaj_yavaa)
print(python_surch_baigaa)Үр дүн:
True
False
TrueЭнд нэг чухал ажиглалт бий: bool болж чаддаг өгүүлбэр гэдэг нь "тийм/үгүй" гэж хариулагдах өгүүлбэр юм. "Гадаа харанхуй байна уу?" — тийм/үгүй: bool болно. "Гадаа ямар байна?" — "сэрүүхэн, салхитай": энэ bool биш, string-ийн ажил. Программ зохиох явцад та мэдээллээ "аль төрлийн асуултад хариулж байна" гэдгээр нь ялгаж сурна: хэмжээс бол int/float, чөлөөт хариулт бол string, тийм/үгүй бол bool. Мөн нэрлэлтийн нэг сайхан дадлыг эндээс харж болно: bool хадгалдаг variable-ийг асуулт шиг уншигдахаар нэрлэвэл код өгүүлбэр мэт урсдаг — duugui_gorim, gadaa_haranhui гэсэн нэрсийг print дотор харахад "юуны үнэн-худал вэ" нь шууд ойлгогддог.
Гурав дахь жишээ: Python өөрөө bool "төрүүлдэг". Одоо хамгийн сонирхолтой нь. Bool утгыг гараар бичиж хайрцганд хийхээс гадна — Python өөрөө асуултын хариу болгож үйлдвэрлэдэг:
python
print(10 > 3)
print(10 > 300)Үр дүн:
True
FalseЭнд > тэмдэг бол "их үү?" гэсэн асуулт юм: эхний мөр "10 нь 3-аас их үү?" гэж асуухад Python бодоод True гэж хариулав; хоёр дахь нь "10 нь 300-аас их үү?" — False. Анзаараарай: хариултууд нь bool төрлөөр ирж байна — өмнөх хичээлд + тэмдэг int-үүдээс int, string-үүдээс string гаргадаг байсан бол харьцуулах асуултууд ямар ч орцоос bool гаргадаг юм. Энэ бол дараагийн бүлгийн бүх ажиллагааны эх булаг: программын "шийдвэрүүд" нь яг ийм асуултуудын True/False хариун дээр тогтдог. Харьцуулах тэмдгүүд > -ээс гадна бүхэл бүтэн гэр бүл байдаг (бага, тэнцүү, ялгаатай...) — тэдгээрийн бүрэн, нарийн хичээл Бүлэг 6-д тусгайлан бий тул өнөөдөр бид зөвхөн "асуулт -> bool хариу" гэсэн зарчмыг л авч үлдье.
Хүсвэл туршаад үзээрэй: өөрийн насаа variable-д хийгээд nas > 10, nas > 100 гэсэн хоёр асуултыг хэвлүүлж, хариултууд нь таны бодит байдалтай таарч буйг шалгаарай. Сонирхвол print(5 > 5) гэж бичээд хариуг нь эхлээд таамаглаад үзээрэй — "их" гэдэгт "тэнцүү" багтдаг уу, үгүй юу гэдгийг Python танд өөрөө хэлж өгнө.
Алдаа 1: Жижиг үсгээр бичих. True-г англи бичгийн дадлаар жижгээр эхлүүлбэл:
python
gerel_asaaltai = truePython:
NameError: name 'true' is not defined. Did you mean: 'True'?Орчуулбал: "'true' гэдэг нэр тодорхойлогдоогүй. Та 'True' гэх гэсэн юм болов уу?" Танил түүх: Python-д том жижиг үсэг өөр тэмдэгт тул true бол True-ийн "дүү" биш — огт өөр, хэнд ч танигдаагүй нэр юм. Python таны true-г "ямар нэг variable-ийн нэр байх" гэж хайгаад олоогүй. Азаар "Did you mean" санал энэ удаад алдааг чинь яг оносон байна. False-д мөн адил: false гэж бичвэл ижил төрлийн NameError угтана. Дүрэм: True, False — үргэлж том эхний үсэгтэй.
Алдаа 2: Хашилтад хийчих. Bool-оо дугтуйнд хийвэл:
python
duugui_gorim = "True"Алдааны мэдэгдэл гарахгүй — энэ бол бүрэн ажиллах код, гэхдээ урхитай: "True" бол bool биш, Т-r-u-e гэсэн дөрвөн тэмдэгттэй string юм. Өмнөх хичээлийн дугтуйн дүрмээ саная: хашилтанд орсон бүхэн — тоо шиг харагдсан ч, True шиг харагдсан ч — string болдог. Хэвлэхэд хоёулаа True гэж ижилхэн харагдах тул нүдээр ялгагдахгүй, гэвч дараагийн бүлэгт нөхцөл шалгаж эхлэхээр энэ хоёрын зан огт өөр байдгаас болж "яагаад ажиллахгүй байгаа юм бэ" гэсэн эргэлзээ төрүүлдэг сонгодог урхи юм. Дүрэм: bool утга хашилтгүй амьдардаг — яг тоо шиг.
Алдаа 3: "Тэг, нэгээр" орлуулах гэж оролдох. Зарим хүн унтраалгыг тоогоор буулгамаар санагддаг:
python
duugui_gorim = 1Мөн л алдаа гарахгүй, мөн л урхитай. Тийм ээ — 1-ийг "асаалттай", 0-ыг "унтраалттай" гэж хэрэглэх уламжлал компьютерын гүнд үнэхээр байдаг бөгөөд Python ч гэсэн True-г 1-тэй, False-ийг 0-той "садан" гэж үздэг нь үнэн (сониуч хүн print(True + True) гэж туршаад 2 гарахыг хараарай — хөгжилтэй ч, ийм код бичихийг зөвлөхгүй). Гэвч уншигдах чанараараа хоёр хувилбар зөрчилддөг: duugui_gorim = True гэсэн мөр өөрөө өөрийгөө тайлбарлаж байхад duugui_gorim = 1 гэдэг нь "нэг юу гэсэн үг вэ — асаалттай юу, дугаар уу, тоо юу?" гэсэн асуулт үлдээдэг. Нэрийн хичээл дээр бид "код нэг бичигдээд олон уншигддаг" гэж ярьсан — тэр зарчим төрөл сонголтод ч үйлчилнэ: тийм/үгүй мэдээлэлд bool төрлөө хэрэглэ, тоогоор дүр эсгүүлэх хэрэггүй.
Bool бол хоёрхон утгатай төрөл: True ба False — гэрлийн унтраалга шиг, дундын төлөвгүй.
True, False хоёр хашилтгүй, том эхний үсэгтэй бичигдэнэ — true бол NameError, "True" бол bool биш string.
Тийм/үгүй гэж хариулагдах мэдээлэл bool-ийн ажил; тохиргооны товчлуур бүрийн ард нэг bool сууж байдаг.
Харьцуулах асуултууд (10 > 3 гэх мэт) хариугаа bool төрлөөр өгдөг — энэ нь дараагийн бүлгийн шийдвэр гаргалтын эх булаг.
Тийм/үгүй мэдээлэлд 1/0 биш bool хэрэглэх нь уншигдах чанарын зөв сонголт.
Дараагийн хичээлд бид дөрвөн төрлөө (int, float, string, bool) нэг дор эргэн харж, шинэ нэг багаж авна: type() — ямар ч утгын төрлийг Python-оос өөрөөс нь асуудаг хэрэгсэл. Энэ хичээлүүдэд бид төрлүүдийг нүдээрээ таньж явсан бол одооноос "албан ёсны бичиг баримтыг" нь шалгадаг болно.
Бүртгэлтэй болсноор энэ сургалтын бүх хичээлд хандах эрх авна.