Ачааллж байна...
Өмнөх хичээлд бид тооны хоёр төрөлтэй танилцсан. Өнөөдөр бид таны хамгийн эртний танил руу албан ёсоор эргэж очно: string буюу бичвэрийн төрөл. "Танил" гэдэг нь үнэн — таны бичсэн хамгийн анхны код print("Сайн байна уу, дэлхий!") дотор string байсан бөгөөд түүнээс хойш бараг хичээл бүрд string оролцсоор ирсэн. Бид түүний тухай хэсэг хэсгээр нь мэдээлэл цуглуулсан: хашилтанд хийсэн бичвэрийг string гэдэг, Python string-ийн доторхыг "ойлгохыг" оролддоггүй, хэвлэхэд хашилт нь хамт гардаггүй. Энэ хичээлд бид тэр тархай мэдлэгээ нэг цул ойлголт болгож, дээр нь гурван шинэ давхарга нэмнэ: хашилт яагаад хоёр янз байдаг вэ, тоон дүрстэй string гэж ямар амьтан бэ, тэгээд өмнөх хичээлийн төгсгөлд амласан гол асуулт — "5" + "3" ба 5 + 3 хоёр яагаад огт өөр хариу өгдөг вэ.
String гэдэг үгийн гарлыг эргэн саная: англиар "утас, хэлхээ" гэсэн үг бөгөөд бичвэрийг тэмдэгтүүдийн хэлхээ гэж хардаг учраас ийм нэртэй болсон. "Сайн" гэдэг string бол Python-ы нүдээр С, а, й, н гэсэн дөрвөн тэмдэгт утсанд хэлхээстэй сувд мэт дараалсан зүйл юм. Энэ "хэлхээ" гэдэг ойлголт нь энгийн сонсогдож байгаа ч дотроо гүн юм: тэмдэгт бүр байрандаа, дараалал нь чухал, урт нь хэмжигддэг — эдгээр чанаруудыг бид Бүлэг 9-д гүнзгий ашиглах болно. Өнөөдөр бидэнд хэрэгтэй гол санаа нь: string бол Python-ы хувьд "утга учиргүй боловч дэс дараатай тэмдэгтүүд" юм — тэр дотор монгол үг байна уу, англи үг байна уу, тоо шиг харагдах юм байна уу — Python-д ялгаагүй, бүгд адилхан "хэлхээ".
String-ийн мөн чанарыг ингэж төсөөлөөрэй: хашилт бол битүүмжилсэн дугтуй юм. Та Python-д ямар нэг зүйл өгөхдөө хоёр сонголттой. Нэг нь — ил өгөх: 12 гэж хашилтгүй өгвөл Python түүнийг гартаа авч, эргүүлж тойруулж хараад "аан, энэ int байна, үүнтэй тооцоолол хийж болно" гэж ойлгодог. Нөгөө нь — дугтуйнд хийж, битүүмжилж өгөх: "12" гэж хашилттай өгвөл Python дугтуйг онгойлгодоггүй. Тэрээр дугтуйг зөөнө, хадгална, хэвлэхдээ доторхыг нь харуулна, бүр хоёр дугтуйг зэрэгцүүлж наана (энэ гайхалтай үйлдэлтэй доор танилцана) — гэхдээ доторх нь "юу гэсэн үг" болохыг хэзээ ч шинжилдэггүй. Дугтуйн дотор 12 гэж бичээстэй байлаа ч Python-ы хувьд тэр бол "тоо" биш — "1 гэсэн зурлага, ард нь 2 гэсэн зурлага бүхий битүү илгээмж" юм. Хэвлэхэд хашилт хамт гардаггүйн учир ч эндээс тодорно: хашилт бол дугтуй буюу сав нь болохоос илгээмжийн агуулга биш — хүнд үзүүлэхдээ Python агуулгыг нь л үзүүлдэг.
Энэ зүйрлэл өмнөх хичээлийн TypeError-ыг ч гэрэлтүүлнэ: "12" + 1 гэдэг нь "битүү дугтуй дээр тоо нэм" гэсэн захиалга — дугтуйг онгойлгохгүйгээр доторхтой нь тооцоолол хийх аргагүй тул Python татгалздаг юм. Дугтуйг "онгойлгуулж" болдог — тусгай хэрэгсэл бий — гэхдээ тэр хэрэгсэлтэй бид input()-ийн хичээлд, яг хэрэгтэй мөчид нь танилцана.
Одоо эхний шинэ мэдлэг. Python-д string-ийг хоёр янзын хашилтаар бичиж болдог — дан хашилт ('...') ба давхар хашилт ("..."):
python
mend = "Сайн байна уу"
bayar = 'Баяр хүргэе'
print(mend)
print(bayar)Үр дүн:
Сайн байна уу
Баяр хүргэеХоёр мөр хоёр өөр хашилт хэрэглэсэн ч үр дүн ижил зарчмаар гарлаа — Python-ы хувьд 'Баяр хүргэе' ба "Баяр хүргэе" нь яг ижил string юм. Тэгвэл яагаад хоёр хэлбэр байдаг юм бэ, аль нэг нь илүүц биш үү? Үгүй — хоёр байдгийн учир нь хашилт өөрөө бичвэрт орох тохиолдол юм. Төсөөлөөрэй: та Бат хэлэхдээ 'za' гэсэн гэдэг өгүүлбэрийг string болгох гэж байна. Хэрэв ганцхан төрлийн хашилт байсан бол бичвэр доторх хашилт нь "string-ийн төгсгөл" гэж андуурагдаж будлиан үүсэх байсан. Хоёр төрөлтэй учраас шийдэл нь гоё энгийн: бичвэр дотор чинь ямар хашилт орох гэж байна, string-ээ нөгөө төрлийн хашилтаар нь хүрээл:
python
uguulber = "Бат хэлэхдээ 'za' гэсэн"
print(uguulber)Үр дүн:
Бат хэлэхдээ 'za' гэсэнPython давхар хашилтыг хараад "string эхэллээ" гээд, дараагийн давхар хашилт хүртэл бүхнийг — дундах дан хашилтуудыг ч оролцуулаад — агуулга гэж үзсэн. Гаднах дугтуй нь давхар хашилт, доторх дан хашилтууд нь ердийн "зурлагууд" болж хэвлэгдлээ. Энэ сургалт үндсэндээ давхар хашилтыг хэрэглэж ирсэн бөгөөд цаашид ч тэгнэ — гэхдээ одоо та кодод дан хашилт таарвал гайхахгүй, "ижил дугтуйн өөр загвар" гэж таних боллоо.
Хоёр дахь жишээ: тоон дүрстэй string. Дугтуйн зүйрлэлээ шалгуурт оруулъя:
python
utasnii_dugaar = "99112233"
print(utasnii_dugaar)Үр дүн:
99112233Утасны дугаар яагаад хашилттай байгааг ажигтай хүн асуух байх — "тоо юм чинь int байх ёстой биш үү?" Энд программистуудын нэг нарийн ялгаа бий: бүх "цифртэй зүйл" тоо биш. Асуулт нь "цифрээс бүрддэг үү" биш — "үүгээр тооцоолол хийх үү" юм. Утасны дугаарыг нэмж хасдаггүй, хоёр дугаарын дундажийг боддоггүй — дугаар бол таних тэмдэг болохоос хэмжигдэхүүн биш. Тиймээс утасны дугаар, автобусны дугаар, барааны код зэргийг string-ээр хадгалдаг нь зөв дадал юм. Бас нэг практик шалтгаан: утасны дугаар 0-ээр эхэлдэг байсан бол int болгоход тэр 0 нь алга болно (Python-д 099 гэсэн int гэж байхгүй) — string дотор бол тэмдэгт бүр байрандаа хэвээр хадгалагдана.
Гурав дахь жишээ: string "нэмэх нь". Одоо энэ хичээлийн од. Хоёр string-ийг + тэмдгээр "нэмбэл" юу болох вэ:
python
ovog = "Дорж"
ner = "Бат"
buten_ner = ovog + ner
print(buten_ner)Үр дүн:
ДоржБатТооцоолол болоогүй — залгалт боллоо! String-үүдийн ертөнцөд + тэмдэг "нэмэх" гэсэн утгаа орхиод "залгах" гэсэн утгатай болдог: хоёр хэлхээг үзүүр үзүүрээр нь холбож нэг урт хэлхээ хийдэг. Энэ үйлдлийг программчлалд concatenation ("залгалт" — өмнөх хичээлийн TypeError мэдэгдэлд гарч байсан concatenate гэдэг үг яг энэ!) гэдэг. Хоёр нэр зайгүй наалдсаныг анзаараарай: Python таны өгснийг л залгадаг, "хүн уншихад зай хэрэгтэй байх" гэсэн бодол түүнд байхгүй — зай хэрэгтэй бол өөрөө нэм: ovog + " " + ner гэвэл дунд нь нэг зайны тэмдэгт бүхий string залгагдаж "Дорж Бат" гарна. (" " гэдэг нь ганц зай агуулсан жинхэнэ string юм — дугтуйн дотор "хоосон зай гэдэг зурлага" байгаа гэсэн үг.)
Дөрөв дэх жишээ: "5" + "3" ба 5 + 3 — их мөргөлдөөн. Одоо бүх утсыг нэг зангилаанд холбоё:
python
print(5 + 3)
print("5" + "3")Үр дүн:
8
53Хоёр мөр нүдэнд бараг ижил — үр дүн нь тэс өөр. Эхний мөрөнд хоёр int тул + нь "нэмэх": 8. Хоёр дахь мөрөнд хоёр string тул + нь "залгах": "5" хэлхээний ард "3" хэлхээ наалдаж "53" гэсэн хоёр тэмдэгттэй string төрлөө. Анзаараарай — 53 гэсэн тоо биш, "53" гэсэн бичвэр: тавин гурав гэсэн утга энд хаана ч байхгүй, зүгээр л хоёр зурлага зэрэгцсэн дугтуй юм. Энэ хоёр мөрийг зэрэгцүүлж хараад ялгааг нь тайлбарлаж чадаж байгаа бол та энэ бүлгийн хамгийн чухал ойлголтыг эзэмшсэн гэсэн үг: + тэмдгийн үйлдэл орцынхоо төрлөөс хамаардаг — төрөл нь үйлдлийг захирдаг. Яг энэ үзэгдэл дээр дараагийн хичээлүүдийн нэг том сэдэв тогтоно: input()-ээр хэрэглэгчээс "тоо" авахад үнэндээ string ирдэг бөгөөд болгоомжгүй нэмэлт хийвэл 5 + 3 = 8-ын оронд "5" + "3" = "53" гарч программ "чимээгүйхэн худлаа ярьдаг" — тэр урхинаас хамгаалах бамбайг бид тэнд хийнэ.
Хүсвэл туршаад үзээрэй: өөрийн овог, нэрээ хоёр variable-д хадгалаад дунд нь зайтай залгаж хэвлээрэй. Сонирхвол нэг string-ийг тоогоор үржүүлж үзээрэй — print("Яв! " 3) — string-үүдийн ертөнцөд тэмдэг ямар утгатай болсныг өөрөө нээх болно (айлтгүй: энэ бол ажилладаг, хөгжилтэй үйлдэл).
Алдаа 1: String дээр тоо нэмэх. Хоёр ертөнцийг зөвшөөрөлгүй хольвол:
python
angi = "5"
print(angi + 1)Python:
TypeError: can only concatenate str (not "int") to strОрчуулбал: "TypeError: str дээр зөвхөн str залгаж болно, int болохгүй." Өмнөх хичээлд энэ мэдэгдэлтэй нэг таарсан — одоо та түүнийг үг бүрээр нь уншиж чадна: Python "5" string-ийг хараад + тэмдгийг "залгалт" гэж шийдсэн (эхний орц нь string учраас), тэгээд залгах гэтэл нөгөө тал нь int байсан тул "дугтуйн ард нүцгэн тоо наах аргагүй" гэж татгалзжээ. Гарц нь хоёр байдаг: тооцоолол хийх санаатай байсан бол хашилтаа авч int болго (angi = 5); залгах санаатай байсан бол тоогоо string болгох хэрэгсэл бий — түүнтэй input()-ийн хичээлд танилцана. Аль нь ч бай, дүрэм нэг: нэг үйлдэлд оролцогчид нэг ертөнцийнх байх ёстой.
Алдаа 2: Хашилтын төрлөө дундаа солих. Нээснээрээ хаагаагүй бол:
python
mend = "Сайн байна уу'Python:
SyntaxError: unterminated string literal (detected at line 1)Танил мэдэгдэл — "төгсгөлгүй string" — гэхдээ энэ удаад хашилт бичсэн мөртлөө гарч байгааг анзаараарай: давхар хашилтаар нээгээд дан хашилтаар хаажээ. Python-ы хувьд string давхар хашилтаар нээгдсэн бол зөвхөн давхар хашилтаар л хаагддаг — дундах дан хашилт бол "агуулгын зурлага" гэдгийг та эхний жишээнээс мэднэ. Тиймээс Python хаалтын хашилтаа мөрийн төгсгөл хүртэл хайгаад олоогүй хэрэг. Дүрэм: юугаар нээнэ, түүгээрээ хаа. VS Code энд бас дохио өгдөг: string-ийг эдитор нэг өнгөөр (ихэвчлэн улбар шар маягийн) буддаг тул хашилт чинь буруу байвал мөрийн "буداг" ер бусын урт сунаж будлиантсан харагдана — өнгөний гажиг бол бичиглэлийн гажгийн толь юм.
Алдаа 3: Хоосон string ба зайны string-ийг андуурах. Мэдэгдэлгүй, нүдэнд үл үзэгдэх төөрөгдөл:
python
zai = " "
hooson = ""
print(zai + "Бат")
print(hooson + "Бат")Үр дүн:
Бат
БатХоёр variable харахад ижилхэн "юу ч байхгүй" мэт — гэвч тэс өөр. " " бол нэг тэмдэгттэй string: доторх зурлага нь зай учраас нүдэнд харагдахгүй ч дугтуй хоосон биш. "" бол жинхэнэ хоосон string: тэг тэмдэгттэй, "дотроо юу ч байхгүй битүү дугтуй" — хачирхалтай сонсогдож болох ч бүрэн хууль ёсны, хэрэгтэй зүйл (жишээ нь "хараахан нэр оруулаагүй" төлөвийг илэрхийлэхэд хэрэглэгддэг). Үр дүнг хараарай: эхний мөрийн "Бат"-ын урд нэг зай "залгагдсан" бол хоёр дахь нь юу ч нэмэгдээгүй. Ийм үл үзэгдэгч ялгаанууд string-тэй ажиллахад жинхэнэ будлиан тарьдаг — ялангуяа хожим хэрэглэгчийн бичсэн зүйлийг шалгах үед "Бат" ба "Бат " (ард нь далд зайтай) хоёр өөр string гэдэг нь олон программистын үсийг буурал болгосон баримт юм. Одоохондоо тогтоох дүрэм: string-ийн урт нүдээр биш, тэмдэгтээр тоологддог — зай ч тэмдэгт мөн.
String бол тэмдэгтүүдийн хэлхээ: Python доторхыг нь "ойлгодоггүй", битүүмжилсэн дугтуй мэт зөөдөг.
Хашилт дан ба давхар хоёр хэлбэртэй, утгын ялгаагүй — бичвэр дотор нэг төрлийн хашилт орох бол нөгөөгөөр нь хүрээлнэ; юугаар нээснээ түүгээрээ хаана.
Цифрээс бүрдсэн ч тооцоололд ордоггүй зүйлс (утасны дугаар гэх мэт) string байх нь зөв.
String-үүдэд + нь "залгах" (concatenation): "Дорж" + "Бат" нь "ДоржБат"; тиймээс "5" + "3" нь 8 биш "53".
String дээр int нэмбэл TypeError — нэг үйлдэлд оролцогчид нэг төрлийнх байх ёстой; зай ч тэмдэгт тул " " хоосон биш.
Дараагийн хичээлд бид гурав дахь төрөлтэй танилцана — хамгийн жижигхэн, хамгийн ер бусын нь: bool, ердөө хоёрхон утгатай "үнэн-худлын" төрөл. Тэр хоёрхон утга яагаад бүхэл бүтэн Бүлэг 6-гийн (шийдвэр гаргадаг программуудын) түлхүүр болдгийг тэнд үзье.
Бүртгэлтэй болсноор энэ сургалтын бүх хичээлд хандах эрх авна.