Ачааллж байна...
Өнөөдрийн хичээл нэг "зовлонг" эмчилнэ — гэхдээ эмчилгээнээс өмнө зовлонгоо бүрэн мэдрэх хэрэгтэй: юуг сайжруулж байгаагаа мэдэрсэн хүн шинэ хэрэгслээ хайрлаж сурдаг. Тиймээс эхлээд нэг энгийн даалгаврыг таны одоогийн хоёр аргаар хийж үзье. Даалгавар: ner дотор "Бат", nas дотор 12 байгаа гэхэд "Сайн байна уу, Бат! Та 12 настай юм байна." гэсэн өгүүлбэр хэвлэ.
Арга нэг — таслалт print (Бүлэг 5-аас хойшхи таны байнгын нөхөр):
python
ner = "Бат"
nas = 12
print("Сайн байна уу,", ner, "! Та", nas, "настай юм байна.")Үр дүн:
Сайн байна уу, Бат ! Та 12 настай юм байна.Ажиллалаа... гэхдээ ойрхон хараарай: "Бат !" — нэр ба анхаарын тэмдгийн хооронд илүү зай орчихож. Учир нь таслалт print хэсэг бүрийн хооронд өөрөө зай тавьдаг — тэр автомат зай ихэнхдээ тус болдог ч, цэг таслал нааж бичих хэрэгтэй болмогц дайсан болдог: та зайг нь удирдаж чадахгүй. Арга хоёр — залгалт (+ ба str()):
python
print("Сайн байна уу, " + ner + "! Та " + str(nas) + " настай юм байна.")Үр дүн энэ удаад төгс. Гэхдээ мөрөө бичих үйл явцаа эргэцүүл: дөрвөн хашилтын хос, гурван +, зайг гараар тааруулах, тэгээд nas-ийг str()-ээр дугтуйлахаа мартвал — таны сайн таньдаг TypeError. Богинохон өгүүлбэрт найман "эвдэрч болох цэг": урт өгүүлбэрт энэ арга жинхэнэ утгаараа тарчлал болдог. Хоёр арга хоёулаа "болдог, гэхдээ өвдөлттэй" — тэгвэл Python-д гурав дахь, орчин үеийн зам бий: f-string — өнөөдрийн баатар.
F-string-ийн санааг та бичиг баримтын ертөнцөөс сайн мэднэ: бэлэн маягт. Гэрчилгээ, урилга, тодорхойлолт — бүгд нэг зарчимтай: бичвэр нь урьдчилан бэлэн, дунд нь нэр, огноо, тоо орох нүхнүүд үлдээстэй: "Эрхэм ________ танд ________ оны төгсөлтийн баярын мэнд хүргэе!" Маягтын гоо нь: өгүүлбэрийн урсгал бүрэн бичигдчихсэн — зөвхөн хувьсах хэсгүүд нь л нүх. F-string яг энэ: та өгүүлбэрээ бүтнээр нь, хүн уншдагаараа бичээд, variable орох газруудад нь {буржгар хаалттай нүх} үлдээнэ — Python хэвлэх мөчид нүх бүрийг утгаар нь дүүргэнэ. Function-ий хичээлийн "жор дээрх нүх" (parameter) зүйрлэлтэй ах дүү санаа гэдгийг анзаарсан байх — тэнд нүх нь жоронд, энд нүх нь өгүүлбэрт байгаа ялгаатай.
Зовлонт даалгавраа гурав дахь аргаар:
python
ner = "Бат"
nas = 12
print(f"Сайн байна уу, {ner}! Та {nas} настай юм байна.")Үр дүн:
Сайн байна уу, Бат! Та 12 настай юм байна.Төгс гарц — тэгээд мөрөө хар: нэг хашилтын хос, нэг ч +, нэг ч str(). Бичиглэлийг задалъя. Нээх хашилтын өмнө жижиг f үсэг зогсож байна — энэ бол "энэ string дотор нүхнүүд бий, дүүргэж хэвлээрэй" гэсэн Python-д өгөх дохио (f нь format буюу "хэлбэржүүлэх" гэдгийн товчлол). Тэр f-гүй бол юу болохыг алдаануудын хэсэгт үзнэ — одоохондоо дүрэм: f + хашилт хоёр наалдмал хос. String дотор {ner} ба {nas} гэсэн буржгар хаалттай хэсгүүд байна — эдгээр нь нүхнүүд: Python хэвлэх мөчид {ner}-ийн оронд ner хайрцагны доторхыг, {nas}-ийн оронд nas-ийнхыг тавьдаг. Хамгийн сайхан нь: {nas} дотор int байсан ч str() хэрэггүй — f-string нүхээ дүүргэхдээ ямар ч төрлийн утгыг өөрөө бичвэр болгож хувиргадаг: залгалтын хамгийн өвдөлттэй цэг ийнхүү арилав. Буржгар хаалтыг гар дээрээс Shift + дөрвөлжин хаалтны товчоор ({ нь [ товчин дээр, } нь ] дээр) бичдэг — эхэндээ хуруу дасахгүй байж болох ч энэ хос удахгүй таны хамгийн олон дардаг товчнуудын нэг болно.
Нэг чухал зүйл: буржгар хаалтгүй хэсэг нь жирийн string хэвээрээ — Бүлэг 5-ын бүх дүрэм (битүү дугтуй, хашилтын хос...) хүчинтэй. F-string бол шинэ төрөл биш — нүх дүүргэдэг чадвартай string л юм: гардуулагдсан үр дүн нь ердийн str бөгөөд түүнийг хайрцганд хадгалж, урттай нь len-ээр тоолж, авдрын method-уудыг нь дуудаж — string-д хийдэг бүхнээ хийж болно.
Хоёр дахь жишээ: нүхэнд илэрхийлэл суулгах. Нүх зөвхөн variable-ийн нэр хүлээдэггүй — бодогдох ёстой юу ч байж болно:
python
une = 1500
shirheg = 4
print(f"{shirheg} хуушуур {une * shirheg} төгрөг болно")Үр дүн:
4 хуушуур 6000 төгрөг болно{une shirheg} — нүхэн дотор тооцоолол: Python нүхээ дүүргэхийн өмнө доторхыг нь боддог (хаалт доторх эхэлж боловсрогддог — Бүлэг 3-ын мөнхийн дүрэм буржгар хаалтанд ч үйлчилнэ). Function-ий дуудлага ч нүхэнд суудаг: f"Таны нэр {len(ner)} үсэгтэй юм байна" — len-ийн гардуулалт нүхээ дүүргэнэ. Гэхдээ нэг хэмжээний зөвлөгөө: нүхэнд урт, ярвигтай илэрхийлэл чихэхээр өгүүлбэр уншигдахаа болино — тэгэхээр эхлээд тооцоолж хайрцганд хадгалаад, нүхэнд нэрийг нь тавь: niit = une shirheg гээд f"...{niit} төгрөг..." — нэр өгөх нь уншигчид үйлчилдэг гэсэн Бүлэг 4-ийн сургамж энд ч ажиллана.
Гурав дахь жишээ: f-string function-тэй гар нийлэх нь. Өмнөх бүлгийн gerchilgee function-оо шинэ хэрэгслээрээ дахин бичье:
python
def gerchilgee(ner, ono):
print("------------------------------")
print(f"ГЭРЧИЛГЭЭ: {ner} танд олгов")
print(f"Оноо: {ono} ({ono} нь 100-гаас {100 - ono} дутуу)")
print("------------------------------")
gerchilgee("Сараа", 88)Үр дүн:
------------------------------
ГЭРЧИЛГЭЭ: Сараа танд олгов
Оноо: 88 (88 нь 100-гаас 12 дутуу)
------------------------------Гурав дахь мөрийг ажигла: нэг f-string дотор гурван нүх — {ono} хоёр удаа (нэг variable олон нүхэнд орж болно), {100 - ono} нэг удаа. Parameter-ууд нүхэнд шууд суудаг нь function + f-string хосыг бичихэд тааламжтай болгодог: function-ий "хувьсдаг хэсэг нь parameter" гэсэн зарчим, f-string-ийн "хувьсдаг хэсэг нь нүх" гэсэн зарчим хоёр угаасаа нэг санааны хоёр илрэл юм.
Дөрөв дэх жишээ: return-тэй хоршил — өгүүлбэр гардуулагч. F-string-ийн гардуулалт ердийн string тул return-ээр гардуулж болно:
python
def tanilts(ner, hot):
return f"Намайг {ner} гэдэг, би {hot} хотод амьдардаг."
uguulber = tanilts("Оюунаа", "Дархан")
print(uguulber)
print(len(uguulber))Үр дүн:
Намайг Оюунаа гэдэг, би Дархан хотод амьдардаг.
47Function маань бэлэн өгүүлбэр гардуулдаг боллоо — дуудагч түүнийг хэвлэх үү, урттай нь ажиллах уу, файлд бичих үү (ирээдүйн чадвар) — өөрөө шийднэ: өмнөх бүлгийн "return хоёр замыг нээдэг" зарчим f-string-тэй нийлээд "бичвэр үйлдвэрлэдэг function" гэсэн маш түгээмэл хэв маягийг төрүүлж байна. Мөн len(uguulber) нь 47 гэж хэвлэснийг ажигла — f-string-ийн гардуулалт "жинхэнэ" string гэдгийн нотолгоо: нүхнүүд нь аль хэдийн дүүрчихсэн, ердийн тэмдэгтүүд болчихсон.
Тав дахь жишээ: гурван аргын эцсийн зэрэгцүүлэлт. Хичээлийн эхний даалгаврыг гурван аргаар зэрэгцүүлж, дүгнэлтээ нүдээр хийе:
python
ner = "Бат"
nas = 12
print("Сайн байна уу,", ner, "! Та", nas, "настай юм байна.")
print("Сайн байна уу, " + ner + "! Та " + str(nas) + " настай юм байна.")
print(f"Сайн байна уу, {ner}! Та {nas} настай юм байна.")Гурван мөр — нэг санаа. Эхнийх: богино, гэхдээ зай нь захирагддаггүй. Хоёр дахь: зай төгс, гэхдээ бичихэд өвдөлттэй, str() нэхдэг. Гурав дахь: зай төгс, str()-гүй, тэгээд хамгийн гол нь — эцсийн өгүүлбэр шигээ уншигддаг: нүдээр гүйлгэхэд "Сайн байна уу, хэн нэгэн! Та хэдэн настай юм байна" гэсэн урсгал шууд харагдана. Өнөөдрөөс хойшхи зөвлөмж: бичвэр дотор утга суулгах бүх шинэ кодод f-string-ийг сонго; таслалт print "хурдан шалгаж үзэх" (хоёр утгыг зэрэгцүүлж хармаар байна гэх мэт) хэрэгцээнд амьд үлдэнэ; + залгалт энэ ажилд тэтгэвэрт гарлаа — түүнтэй string "барих" өөр газарт таарсаар байх болно, харин өгүүлбэр угсрах ажилд нь баяртай.
Хүсвэл туршаад үзээрэй: тоо таах тоглоомынхоо "Оноов! Та", oroldlogo, "оролдлогоор таалаа" гэсэн таслалт мөрийг f"Оноов! Та {oroldlogo} оролдлогоор таалаа" болгож шинэчлээрэй — өөрийн хуучин кодыг шинэ мэдлэгээр өнгөлөх бяцхан баяр. Сонирхвол нэг нүхэнд method дуудаж суулгаад үзээрэй: f"Таны нэр томоор: {ner.upper()}" — өмнөх хичээлийн авдрын багаж нүхэн дотор ч ажилладаг.
Алдаа 1: f-ээ мартах. Хамгийн түгээмэл нь — чимээгүй, гэхдээ нүдэнд шууд ил:
python
ner = "Бат"
print("Сайн байна уу, {ner}!")Үр дүн:
Сайн байна уу, {ner}!Нүх дүүрсэнгүй — буржгар хаалт нь хаалттайгаа үсэгчлэн хэвлэгдэв. Учир нь f-гүй string бол жирийн битүү дугтуй: Python доторхыг нь шинжилдэггүй (Бүлэг 5-ын үндсэн дүрэм!) тул {ner} нь түүний хувьд "нүх" биш — ердийн долоон тэмдэгт. Алдааны мэдэгдэл гарахгүй ч гарц өөрөө оношоо хашгирдаг: {нэр} хэлбэрийн бичиг дэлгэцэд харагдвал — f мартагджээ. Засвар: нээх хашилтын өмнө f. Энэ бол comment-ийн "хашилт доторх # ажилладаггүй"-тэй ижил гэр бүлийн үзэгдэл: тусгай тэмдэг зөвхөн зөв нөхцөлдөө л тусгай байдаг.
Алдаа 2: Нүхэн доторх нэрийг хашилттай бичих. Дугтуйн дотор дугтуй нухвал:
python
ner = "Бат"
print(f"Сайн байна уу, {"ner"}!")Хуучин Python дээр энэ мөр шууд SyntaxError өгдөг байсан; орчин үеийн хувилбарууд зөвшөөрдөг болсон ч үр дүн нь таны хүссэн юм биш:
Сайн байна уу, ner!"Бат" биш "ner" хэвлэгдэв — учир нь нүхэнд {"ner"} буюу string суулгажээ: нүх доторх зүйл бодогддог (хоёр дахь жишээ) тул string нь өөрөө өөрийнхөө "үр дүн" болж, ner гэсэн үсгүүд нүхийг дүүргэв. Хайрцгийг нээлгэе гэвэл нэрийг хашилтгүй: {ner}. Танил дүрэм биз: Бүлэг 5-ын "хашилттай бол үсгээр нь, хашилтгүй бол хайрцагнаас нь" — print(ner) ба print("ner")-ийн ялгаа нүхэн дотор мөн хүчинтэй: нүх бол жижигхэн кодын цонх — код доторх дүрэм тэнд бүгд үйлчилнэ.
Алдаа 3: Буржгар хаалтыг өөрийг нь хэвлэх хэрэгцээ. Урвуу асуудал — f-string дотор жинхэнэ { тэмдэг хэрэгтэй бол:
python
huvi = 25
print(f"Даалгаврын {huvi}% буюу {өрөөсөн хаалт шаардлагатай хэсэг} гүйцэтгэгдлээ")Python:
SyntaxError: invalid syntax(Мэдэгдлийн яг үг хувилбараас хамаарч ялимгүй өөр байж болно — гол нь нүхэн доторхыг Python код гэж уншаад, "өрөөсөн хаалт шаардлагатай хэсэг" гэдэг нь код биш тул гацсан.) F-string дотор буржгар хаалт бүр "нүх" гэж уншигддаг тул тэмдгийг нь өөрийг нь хэвлэе гэвэл давхарлаж бичдэг: {{ нь нэг { болж, }} нь нэг } болж хэвлэгддэг — f"Хос хаалт ингэж харагдана: {{}}" гэвэл "Хос хаалт ингэж харагдана: {}" гарна. Энэ хэрэгцээ ховор таардаг тул цээжлэх албагүй — таарвал "давхарла" гэсэн нэг үгийг л сана. Ерөнхий сургамж нь үнэтэй: тусгай тэмдэгтэй хэрэгсэл бүр "тэмдгээ өөрийг нь яаж бичих вэ" гэсэн асуулт дагуулдаг — хариулт нь ихэвчлэн ийм "давхарлах/тусгаарлах" жортой байдаг.
F-string: нээх хашилтын өмнө f, string дотор {нүхнүүд} — Python хэвлэх мөчид нүх бүрийг утгаар нь дүүргэнэ; ямар ч төрөл өөрөө хувирдаг тул str() хэрэггүй.
Нүхэнд нэр, тооцоолол, function-ий дуудлага — бодогдох юу ч суудаг; гэхдээ ярвигтайг нь урьдчилан хайрцаглаж, нүхэнд нэр тавих нь уншигдах чанарын дадал.
Гурван аргын хуваарь: шинэ код — f-string; хурдан зэрэгцүүлж харах — таслалт print; + залгалт өгүүлбэр угсрахаас чөлөөлөгдөв.
F-string-ийн гардуулалт ердийн string: хадгалж, хэмжиж, method дуудаж, return-ээр гардуулж болно — "бичвэр үйлдвэрлэдэг function" хэв маягийн үндэс.
Гурван урхи гурван дүрстэй: {нэр} үсэгчлэн харагдвал f мартагдсан; нүхэнд хашилттай нэр тавибал үсэг нь хэвлэгдэнэ; { тэмдгийг өөрийг нь хэвлэхдээ давхарла ({{).
Дараагийн хичээлд string-ийн "сувдан хэлхээ" зүйрлэл эцэст нь бүрэн утгаа олно: индекс — хэлхээний сувд бүрийг дугаараар нь авч үздэг арга. "Эхний зүйл яагаад 0 дугаартай вэ" гэсэн range-ийн хичээлээс хойш хүлээгдсэн асуулт тэнд биетэй хариултаа авч, IndexError гэдэг шинэ танилтай золгоно — тэгээд энэ бүхэн дараагийн бүлгийн list-ийн шууд бэлтгэл болно.
Бүртгэлтэй болсноор энэ сургалтын бүх хичээлд хандах эрх авна.