Мөр ба байт

Мөрийн талаар тодорхой ойлголттой болсон тул Өгөгдлийн төрлүүд хичээлд үзээгүй Python -ий байт гэдэг төрлийн тухай авч үзье. Мөрүүд янз бүрийн тэмдэгтийн кодоор илэрхийлэгдэж болох талаар өмнө нь дурдаж байсан. Ямарч өгөгдлүүд компьютерт эцсийн дүндээ хоёртын системийн 0, 1 цифрүүдээр илэрхийлэгддэг. Иймээс мөрийг бүрдүүлдэг компьютерийн тэмдэгт бүрд кодийн системийн хүснэгтэд тоон кодийг олгосон байдаг. Кодийн хүснэгтүүд олон ч тодорхой стандартуудад хуваагддаг. Кодийн системүүд нэг тэмдэгтийг янз бүрийн уртаар буюу байтаар тодорхойлдог. Жишээ нь тэмдэгтийн ascii системийн хүснэгтэд тэмдэгтийг 7 битээр илэрхийлэх бөгөөд нийтдээ 128 тэмдэгтийг тодорхойлдог.

Өргөтгөсөн ascii системд 8 дахь нэмэлт битийг ашигласнаар /нэг тэмдэгтэд 1 байт/ 256 тэмдэгтийг тодорхойлдог. UTF-8, Unicode, UTF-16, UTF-32 гэх мэтийн системүүд бий. Эдгээрээс UTF-8 хамгийн өргөн ашиглагддаг кодчлолын хүснэгт. UTF-8 -д тэмдэгтүүдийг 1-4 байтаар тодорхойлдог. UTF-8 нь Unicode хүснэгтийн дэд хүснэгтэд ордог. Анхдагчаар Python3 бүх тэмдэгтүүдийг Unicode стандартаар кодлогддог тул мөртэй ажиллах ажиллагааг ихээхэн хөнгөвчилж өгсөн. Учир нь Unicode системийн хүснэгт бараг бүхий л тэмдэгтүүдийг илэрхийлж болдог. Хэрэглэгчийн компьютерийн кодчлолын хүснэгтүүд ялгаатай байж болох ч Windows орчны кирилл үсэгтэй хэрэглэгчдийн кодчлолын хүснэгтүүд бараг л UTF-8 байдаг. Ер нь програмийн кодод мөрүүдтэй ажиллаж байхдаа ихэнх тохиолдолд кодчлолын хүснэгтийг бараг анзаарахгүй. Таны мэдэж байх зүйл бол өгөгдлүүд ямар кодчлолын хүснэгтээр хадгалагдсанг мэдэн тэдгээртэй ажиллахдаа тохирох сиситемийг хэрэглэх юм.
Unicode тэмдэгтүүдийн хүснэгтийн сайтад хандан илүү дэлгэрэнгүй мэдээллийг авч болно.
Тэмдэгтийн хүснэгтүүдтэй ажиллахыг жишээгээр авч үзье. Jupyter Notebook орчинд доорх

командыг өгөөд Shift & Enter дарвал utf-8 гэсэн мөрийг авна. Энэ бол таны компьютер ямар тэмдэгтийн хүснэгтийг ашиглаж байгааг үзүүлсэн хэрэг. Систем ямар тэмдэгтийн хүснэгтийг ашиглаж байгааг мэдэхийн тулд import sys командаар sys санг импортлоод түүний getdefaultencoding функцийг дуудсан. Сан импортлох талаар тусдаа хичээлээр үзэх тул одоо дээрх жишээг дагаад явахад болно. utf-8 бол Unicode тэмдэгтүүдийн 8 бит хэлбэрийн тэмдэглэгээ юм. 128 -аас доош кодтой тэмдэгтүүд 1 байтаар тодорхойлогдоно. 128 -аас доош кодтой тэмдэгтүүд Unicode системд ascii системтэй ижил. Харин 128 - аас дээш кодтой тэмдэгтүүд кодын хэмжээнээсээ хамааран 2, 3, 4  байтаар кодлогдоно. Тэмдэгтүүдийн хүснэгтийн кодчлол нилээд нарийн тул Python -ий хичээлд түүнийг гүнзгийрүүлэн судлаад байх шаардлагагүй. Тэмдэгтийн кодийг авахдаа ord харин тэмдэгтийг кодоор нь гаргахдаа chr функцуудийг ашиглахыг

дээрх жишээгээр харууллаа. Жишээ нь латин a үсэг 97 кодтой. 97 кодоор a үсгийг авч болохыг харуулсаан. Тэмдэгт бүр өөрийн кодтой тул A үсэг өөр кодтой гэдгийг санаарай. Хэрвээ chr(202) гэвэл түүнд тохирох тэмдэгтийг харуулах жишээний. Unicode систем тэмдэгтийн код 1-4 байтаар тодорхойлогдох тул маш олон тооны тэмдэгтүүдийг агуулна.
Хичээлийн зорилго бол мөрийг тэмдэгтэн хэлбэрээс байт хэлбэрт, байт хэлбэрийн мөрийг тэмдэгтэнд хэлбэрт шилжүүлэх аргуудыг ойлгох. Энд л тэмдэгтийн кодийн системийг ашигладаг. Одоо тодорхой жишээг харцгаая.

Жишээнд s = "hello" мөрийг түүний encode аргаар байтад /row bytes гэж нэрлэдэг/ хөрвүүлэн хувьсагчид хадгалсан. encode аргад кодлолын хүснэгтийг нэрийг дамжуулах ёстой. Мөрийг байтад шилжүүлээд хувьсагчдын төрлийг аль нэг хувьсагчийн төрлийг үзүүлэн шалгавал bytes гэдгийг үзүүлнэ. Хувьсагчдыг print камандаар харуулбал мөрийн байтад шилжсэн хэлбэрийг үзүүлнэ. Жишээ нь b'hello'. Мөрийн өмнөх b нь мөр байт төрлийнх гэдгийг заана. 3-р нүдэнд "hello" мөрийн байтын хэлбэр хэчнээн байт урттайг харуулах команд юм. Үр дүнгээс ascii, utf8 -д тэмдэгт бүрийг 1 байтаар харин utf16"hello" мөрийг 12 байтад хадгалсан байгаа нь харагдана. Ер нь utf16 -д тэмдэгтийг 2 байтад хадгалдаг ч энд яагаад 12 байт хадгалсан учрыг тэмдэгтийн хүснэгтийн талаар судлан өөрөө тогтоогоорой.
Python -д кодчлолын хүснэгт өгөгдлийг сүлжээгээр эсхүл файлаар гэх мэтээр дамжуулах үед л чухал байдаг. Өгөгдөл компьютерийн санах ойд байхад Python өгөгдлийг Unicode тэмдэгтүүдийн дараалал гэж үздэг тул encoding буюу кодчлол ойлголт ер нь байхгүй гэсэнтэй ижил.
Мөрийг байт хэлбэрт шилжүүлэх жишээнүүдийг

харцгаая. 1-р нүдний эхний командаар hello мөрийг байт хэлбэрт шилжүүлэхдээ b угтварыг тавиад мөрийг өгнө. Ингэснээр str_in_bytes хувьсагчид hello мөр байт хэлбэрээр хадгалагдана. Хоёрдахь команд str_in_text хувьсагчид hello мөрийг олгож байгаа. Энэ нь хувьсагчдын төрлийг үзүүлэх print командаар батлагдана. Үүнээс гадна мөрөөс encode аргыг шууд дуудсан ч болно. 2 -р нүдний жишээ. Кирил эсхүл ханз гэх мэт үсэгтэй мөрийг ч байтад хөрвүүлж болно. Мөрийн байт хэлбэрт индексээр нь хандах боломжтойг 3-р нүдний эхний жишээ харуулна. Хоёрдахь жишээг бид өмнөх хичээлээс мэднэ. str_in_bytes хувьсагчид мөр байтаар хадгалагдаж байгаа тул мөрийн 0 индекст h -ийн тэмдэгтийн хүснэгтийн код агуулагдана.

Зурагт үзүүлсэн кодийг авч үзье. byte төрөл str төрлийн адилаар өөрчлөлт авдаггүй гэдгийг ойлгох нь чухал. Жишээ нь 1-р нүдний жишээнд str_in_bytes хувьсагчид hello мөрийг байтаар хадгалаад түүний 0 индекстэй байтыг өөрчлөх гэвэл алдаа өгнө. Энэ бол byte төрөл өөрчлөлт авдаггүйг батлана. Хэрвээ өөрчлөгддөг byte төрөл хэрэгтэй бол Python -ий bytearray функцийг ашиглан өөрчлөх боломжтой байт төрлийг үүсгэж болно. 2-р нүдний жишээнд ba хувьсагчид hello мөрийг байтаар олгоод түүнийг индексээр нь өөрчилж байгаа жишээг харууллаа. Ямарч тохиолдолд байтыг str -ийн байгуулагчийг ашиглан мөр рүү буцаан хөрвүүлэх хэрэггүй. Хөрвүүлэхдээ хүрвэл кодчлолын хүснэгтийг заавал заах хэрэгтэйг 3, 4 -р нүдний жишээнүүд харуулна. 3-р нүдний result=str(str_in_bytes) командаар байт төрлийн хувьсагчийг мөр төрөлд хөрвүүлэн hello утгыг авах ёстой мэт. Гэтэл дараагийн хоёр print командын үр дүн b'hello' , 8 гэсэн утгыг өгсөн байгаа. Учир нь str -ийн байгуулагч түүнд дамжуулсан байт төрлийн str_in_bytes хувьсагчийн утгыг шууд мөр төрлийнх болгосон учраас b'hello' , 8 гэсэн утгуудыг буцааж байгаа юм. 8 бол result мөрийн урт. str -ийн байгуулагчаас зөв хэлбэрийн мөрийг авахын тулд 4-р нүдний жишээ шиг байт төрөл ямар кодчлолын хүснэгтийг ашиглаж байгааг заах хэрэгтэй. Манай тохиолдолд utf8. Кодчлолын хүснэгтүүд өөр хоорондоо бүгд тохироод байдаггүй тул хөрвүүлэлтэд нэг ижил кодчлолын хүснэгтийг ашиглахыг зөвлөе. Хөрвүүлэлтэд decode аргыг ч шашиглах боломжтойг 5-р нүдний жишээнд харууллаа. Жишээ нь байт төрлийн str_in_bytes хувьсагчийн decode аргад кодчлолын хүснэгтийн нэрийг дамжуулан дуудвал байтыг мөр рүү зөв хөрвүүлнэ. decode аргад кодчлолын хүснэгтийг заавал дамжуулах ёстой.

Мэдээлэл таалагдсан бол найзуудтайгаа хуваалцаарай.

  Нээгдсэн тоо: 1000 Төлбөртэй

Програмчлалын хэл бүхэнд дотоод буюу интерпретатор эсхүл компилятор өөртөө багтаасан функцууд байдаг. Өөрөөр хэлбэл эдгээр дотоод функцууд хэлний үндсэн боломжид багтсан тул тэдгээрийг ашиглахад ямар нэгэн нэмэлт сан суулгах шаардлагагүй гэсэн үг. Python -нд нилээд тооны дотоод функцууд байдгаас заримыг өмнөх хичээлүүдэд ашигласан. Хичээлээр Python -ий дотоод функцуудээс хамгийн өргөн ашигладаг хэсгийг авч үзье.

Санамж: Програмчлалын хэлийг эзэмшихэд таниас нилээдгүй хүчин чармайлтыг шаардана. Сайтын хичээлүүд нь гарааны буюу үндсэн суурийг нэг дороос цаг алдалгүй судлах, нэмэлт зүйлүүдийг өөрсдөө бие даан сурахад туслах зорилготой. Аливаа зүйлийг сурахын тулд аль болохоор эрт, цаг алдалгүй, идэвхитэй оролдох хэрэгтэй.

  Нээгдсэн тоо: 957 Төлбөртэй

collections пакетын өгөгдлийн төрлүүдийн элементүүдэд хандахад голлон ашигладаг циклийн бүтэц бол for юм. for циклийг collections пакетын өгөгдлүүд гэлтгүй итерацлагддаг дурын төрөлд зохион байгуулан түүний элементүүдэд хандах боломжтой гэдгийг сануулъя.
Суралцах шалгарсан арга дадлага тул циклийн зохион байгуулахыг жишээгээр харцгаая.

1-р нүдэнд numbers жагсаалтыг үүсгээд түүнийг print функцэд өгвөл жагсаалт байдлаар үзүүлнэ.

  Нээгдсэн тоо: 1186 Төлбөртэй

Python -нд тоонуудад энгийн математик үйлдлүүдийг хэрхэн хийхийг харцгаая. Үүний тулд Jupyter Notebook -ийн хичээлийн кодыг хадгалах хавтастаа шилжээд шинэ Notebook үүсгээрэй. Jupyter Notebook -ийг ачааллахыг Код засварлагч хичээлээс харна уу. Python -ий арифметикийн нэмэх (+ Addition), хасах (- Subtraction), үржих (* Multiplication), хуваах (/ Division), хуваалтын үлдэгдэл (% Modulus), зэрэг дэвшүүлэх (** Exponent), бүхэл хуваах (//) операторуудыг үзэцгээе.

  Нээгдсэн тоо: 1587 Төлбөртэй

Элементүүдийн багцийг агуулах төрлүүдийн нэг болох жагсаалт төрлийг авч үзье. Өгөгдлийн багцийн боловсруулалтад хамгийн ихээр ашиглагддаг төрөл бол жагсаалт буюу list гэхэд хэтрүүлэг болохгүй.

Жагсаалттай ажиллах

Жагсаалтыг зарлахдаа [] хаалтыг ашиглана.  

5- р нүдэнд бүхэл тооноос бүрдсэн элементүүдтэй int_list жагсаалтыг үүсгэн утгуудыг олгосон. Жагсаалтын элементүүд өөр өөр төрлийнх байж болохыг 2 - р нүдний жишээ харуулсан. Практикт ихэнх тохиолдолд жагсаалт нэг төрлийн буюу ижил төрөлтэй өгөгдлүүдийг агуулж байдаг. Жагсаалтын уртыг мэдэхдээ len дотоод функцийг ашиглахыг 3 -р нүдний жишээ харуулна. Жагсаалтын элементэд индексээр нь хандах боломжтойг 6 -р нүдний жишээнд харуулсан. Мөрийн адилаар сөрөг индекс ашиглан жагсаалтын эцсээс хандаж болно.

Үйл явдал /event/ тодорхой үйлдэл хийгдсэн талаар системд мэдэгддэг. Хэрвээ бид энэхүү үйлдлийг ажиглах хэрэгтэй бол яг энд…

Нээгдсэн тоо : 109

 

Манай төсөл олон хуудсуудтай болон тэдгээрийн хооронд динамикаар шилжилт хийж байгаа ч тухайн үед шилжилт хийгдсэн хуудаст тохирох…

Нээгдсэн тоо : 171

 

Зочин (Visitor) паттерн классуудыг өөрчлөхгүйгээр тэдгээрийн обьектуудын үйлдлийг тодорхойлох боломжийг олгоно. Зочин хэвийг ашиглахдаа классуудын хоёр ангилалыг тодорхойлно.…

Нээгдсэн тоо : 140

 

Лямбда-илэрхийлэл нь нэргүй аргын хураангуй бичилтийг илэрхийлнэ. Лямбда-илэрхийлэл утга буцаадаг, буцаасан утгыг өөр аргын…

Нээгдсэн тоо : 261

 

Кодийн сайжруулалт /рефакторинг/ хичээлээр програмийн кодоо react -ийн зарчимд нийцүүлэн компонентод салгасан.…

Нээгдсэн тоо : 294

 

Хадгалагч (Memento) хэв обьектын дотоод төлвийг түүний гадна гаргаж дараа нь хайрцаглалтын зарчмыг зөрчихгүйгээр обьектыг сэргээх боломжийг олгодог.

Нээгдсэн тоо : 304

 

Делегаттай нэргүй арга нягт холбоотой. Нэргүй аргуудыг делегатийн хувийг үүсгэхэд ашигладаг.
Нэргүй аргуудын тодорхойлолт delegate түлхүүр үгээр…

Нээгдсэн тоо : 360

 

Математикт харилцан урвуу тоонууд гэж бий. Ямар нэгэн тооны урвуу тоог олохдоо тухайн тоог сөрөг нэг зэрэг дэвшүүлээд…

Нээгдсэн тоо : 351

 

Төсөлд react-router-dom санг оруулан чиглүүлэгчдийг бүртгүүлэн тохируулсан Санг суулган тохируулах хичээлээр бид хуудас…

Нээгдсэн тоо : 430

 
Энэ долоо хоногт

тэгшитгэлийг бод.

Нээгдсэн тоо : 567

 

тэнцэтгэл бишийг бод.

Нээгдсэн тоо : 1020

 

Хоёр тамирчин тойрог замаар нэгэн зэрэг гарч 3,2 км замыг туулан барианд оржээ. Тойргийг нэг тамирчин нөгөөгөөсөө 10 секундээр хурдан тойрдог. Ялагч барианд орж байхад нөгөө нь бүтэн тойрог гүйх үлдсэн байлаа. Ялагч замыг 9 мин 20 секундэд туулсан бол тойрог замын уртыг ол. Тамирчдын хурдыг тогтмол гэж үзнэ.

Нээгдсэн тоо : 520