Жамбыл облысы әкімдігі білім басқармасы Тараз қаласы білім бөлімінің Ы.Сүлйменов атындағы №37 орта мектебі КММ
Информатика пәнінің мұғалімі
Куанышбекова Куралай Сайлауовна
10-11 сыныптарға арналған
Тақырыбы "Python арқылы жасанды интеллект алгоритмлерін әзірлеу және қолдану"
АВТОРЛЫҚ БАҒДАРЛАМА

Алматы 2024 жыл

ӘОЖ
379
КБЖ 74.262.27
Ж 19
Жамбыл облысы әкімдігі білім басқармасы Тараз қаласы білім бөлімінің Ы.Сүлйменов атындағы №37 орта мектебі КММ
Информатика пәнінің мұғалімі
Куанышбекова Куралай Сайлауовна
– Алматы: «Білім әлемі» редакциясы, 2024. – 71 б.
Пікір берушілер:
Қазақ Ұлттық қыздар педагогикалық университетінің оқытушысы, п.ғ.к., қауымдастырылған профессор м.а.
Карсыбаева Раиса Канабековна
Қазақ мемлекеттік қыздар педагогикалық университетінің «Педагогика және психология» кафедрасының кандитаты
Текесбаева Анар
ISBN 978 - 601 - 341 - 501 - 14
Ұсынылып отырған оқулық қазіргі заман талабына сай білім беру саласындағы жаңашыл оқытушыға қойылатын талап та жаңашыл болатыны сөзсіз. Оқытушы алдындағы басты міндет – оқытудың әдіс-тәсілдерін үнемі жетілдіріп және жаңа педагогикалық технологияларды меңгере отырып, еліміздің жарқын болашағын жасайтын білімді де білікті, бәсекеге қабілетті тұлға қалыптастыру.
Жаңа технологияларды меңгеру мұғалімнің кәсіптік, рухани, азаматтық және басқа да көптеген адами келбетінің қалыптасуына игі әсерін тигізеді, өзін – өзі дамытып, оқу үрдісін тиімді ұйымдастыруға көмектеседі. Бүгінгі күні инновациялық әдістер мен ақпараттық технологиялар қолдану арқылы оқушының ойлау қабілетін арттырып, ізденушілігін дамытып, қызығушылығын тудыру, белсенділігін арттыру ең негізгі мақсат болып айқындалады.
© Куанышбекова Куралай Сайлауовна
© ИП «Білім әлемі»
Visual Studio бағдарламасындағы Python 14
Айнымалылар мен мәлімет типтері 20
Сандармен орындалатын амалдар 22
Түсінік хат
«Заманауи білім беру мен тәрбиелеудегі инновациялық техналогиялардың маңызды бағдарламасы Python» - әр түрлі типтегі қосымшаларды(бағдарламаларды) құруға арналған танымал жоғары деңгейлі бағдарламалау тілі. Бұл веб-қосымшалар, ойындар, жұмыс үстелі бағдарламалары және мәліметтер базасымен жұмыс істеуге болады. Python машиналық оқыту мен жасанды интеллектті зерттеу саласында кең таралды.
Python туралы алғаш рет 1991 жылы голландтық әзірлеуші Гидо Ван Россум жариялады. Содан бері бұл тіл дамудың ұзақ жолынан өтті. 2.0 нұсқасы 2000 жылы, 3.0 нұсқасы 2008 жылы шығарылды. Нұсқалар арасындағы осындай үлкен алшақтықтарға қарамастан, ішкі нұсқалары үнемі шығарылып отырады. Сонымен, соңғы нұсқасы 3.9.7 болып табылады. Тілдің барлық шығарылымдары, нұсқалары мен өзгертулері туралы, сондай-ақ аудармашылардың өздері және жұмысқа қажетті утилиталар туралы және басқа пайдалы ақпарат туралы толығырақ ақпаратты https://www.python.org/ ресми сайтынан табуға болады.
«Заманауи білім беру мен тәрбиелеудегі инновациялық техналогиялардың маңызды бағдарламасы Python» бағдарламалау тілінің негізгі ерекшеліктері:
-
Сценарий тілі. Бағдарлама коды сценарий түрінде анықталады.
-
Бағдарламалау парадигмаларының алуан түрлілігін, соның ішінде негізгілері - объектіге бағытталған және функционалды парадигмаларды қолдану.
-
Сценарийлермен жұмыс істеу үшін сценарийді аударатын және орындайтын аудармашы керек. Оны интерпретатор деп атайды.
«Заманауи білім беру мен тәрбиелеудегі инновациялық техналогиялардың маңызды бағдарламасы Python» бағдарламасының орындалуы келесі әрекеттерден тұрады. Біріншіден, біз мәтіндік редакторға берілген бағдарламалау тілінде өрнектер жиынтығымен сценарий жазамыз. Біз бұл сценарийді орындау үшін аудармашыға жібереміз. Аудармашы кодты аралық байт-кодқа айналдырады, содан кейін виртуалды машина алынған байт-кодты операциялық жүйе орындайтын нұсқаулар жиынтығына айналдырады.
Бұл жерде ресми кодты интерпретатордың байт кодына аударуы және виртуалды машинаның виртуалды машинаның машиналық нұсқаулар жиынтығына аударуы формальды түрде болғанымен, екі түрлі процесті болғанымен, іс жүзінде бұл екі процессті интерпретатор бірге атқарады.

Сурет 1.1 – Python интерпретаторының жұмыс принципі
-
Портативтілік және платформаның тәуелсіздігі. Бізде қандай операциялық жүйе орнатылғаны маңызды емес - Windows, Mac OS, Linux, бізге тек осы ОЖ-де аудармашының қатысуымен жұмыс жасайтын сценарий жазу керек.
-
Жадты автоматты басқару мүмкіндігі
-
Динамикалық түрлілігі
«Заманауи білім беру мен тәрбиелеудегі инновациялық техналогиялардың маңызды бағдарламасы Python» - бұл өте қарапайым бағдарламалау тілі, ол лаконикалық және сонымен бірге өте қарапайым және түсінікті синтаксиске ие. Тиісінше, оны үйрену оңай, ал іс жүзінде бұл оқыту үшін ең танымал бағдарламалау тілдерінің бірі болып табылады. Атап айтқанда, 2014 жылы ол Америка Құрама Штаттарында оқытуға арналған ең танымал бағдарламалау тілі ретінде танылды.
«Заманауи білім беру мен тәрбиелеудегі инновациялық техналогиялардың маңызды бағдарламасы Python» тек білім беру саласында ғана емес, сонымен қатар коммерциялық бағдарламаларды құруға ыңғайлы. Сондықтан көптеген тілдер үшін біз қолдана алатын кітапханалар жазылған.
Сонымен қатар, бұл бағдарламалау тілінің өте үлкен қауымдастығы бар, Интернетте сіз осы тіл туралы көптеген пайдалы материалдар, мысалдар таба аласыз және мамандардан білікті көмек ала аласыз.
Python орнату
«Заманауи білім беру мен тәрбиелеудегі инновациялық техналогиялардың маңызды бағдарламасы Python» бағдарламаларын құру үшін бізге аудармашы(интерпретатор) керек. Оны орнату үшін https://www.python.org/downloads/ парағына өтіп , тілдің соңғы нұсқасын жүктеуге сілтеме табыңыз (қазіргі уақытта ол 3.9.5):

Сурет 1.2 – Python-ды көшіруге арналған батырма
Батырманы басу арқылы ағымдағы ОЖ үшін тиісті Python орнатқышы жүктеледі.
Windows ОЖ-де орнатушы іске қосылғанда, орнату шебері терезесін ашады:

Сурет 1.3 – Python-ды орнату шеберінің терезесі
Мұнда біз интерпретатор орнатылатын жолды енгіземіз. Оны өзгертусіз қалдырыңыз, яғни C:\Users\[username]\AppData\Local\Programs\Python\Python36\.
Сонымен қатар, ең төменгі жағында интерпретаторға жолды қоршаған ортаның айнымалыларына қосу үшін «PATH-ге Python 3.9 қосу» белгісін таңдаңыз.
Windows жүйесіндегі Пуск мәзірінде орнатқаннан кейін біз python утилиталарын қосуға арналған белгішелерді таба аламыз:

Сурет 1.4 – Python-ды негізгі менюден қосу әдісі
Мұнда Python 3.9 (64-биттік) утилитасы біз сценарийді басқара алатын интерпретаторды ұсынады. Файлдық жүйеде интерпретатордың файлын өзі орнатылған жол бойынша табуға болады. Windows жүйесінде әдепкі жол C:\Users\[username]\AppData\Local\Programs\Python\Python37 болып табылады, ал интерпретатор дегеніміз python.exe файлы болып табылады. Linux ОЖ-де орнату /usr/local/bin/python3.9 жолы бойынша орындалады.
Бірінші Python бағдарламасы
Алдыңғы тақырыпта көрсетілгендей интерпретаторды орнатқаннан кейін бізге Python-да бағдарлама құруды бастауға болады. Сонымен, алғашқы қарапайым бағдарламаны құрайық.
Жоғарыда айтылғандай, егер орнату кезінде мекен-жайы өзгертілмесе, келісім бойынша инетрпретатор бағдарламасы Linux-те usr/local/bin/python39 жолымен, ал Windows-та C:\Users\[пайдаланушы аты-жөні]\AppData\Local\Programs\Python\Python39\ және python.exe деп аталатын файлда сақталады.
Интерпретатор жүктеп, оған келесі жолды енгізейік:
|
1 |
print("hello world") |
Консоль «hello world» жолын басып шығарады:

Сурет 2.1 – Python-да алғашқы бағдарлама жұмысы
Бұл бағдарлама бір-ақ командадан тұрады, онда белгілі бір мәтінді консольға басып шығаратын print () функциясы қолданылған.
Бағдарламалық файл құру
Негізінде, бағдарламалар сыртқы сценарий(скрипт) файлдарында сақталады, содан кейін орындалу үшін интерпретаторға беріледі. Сонымен, бағдарлама файлын құрайық. Ол үшін С диск жетегінде немесе файлдық жүйенің басқа жерінде сценарийлер үшін python қалтасын құрамыз. Бұл қалтада hello.py деп аталатын жаңа мәтіндік файл жасаңыз. Әдетте, Python коды бар файлдарда py кеңейтілімі болады.

Сурет 2.2 – Python файлы орналасқан қалта
Осы файлды кез-келген мәтіндік редактордан ашып, оған келесі кодты қосайық:
|
1 2 |
name = input("Есіміңізді енгізіңіз: ") print("Сәлем,", name) |

Сурет 2.3 – Скрип файлында жазылған бағдарлама
Скрипт екі жолдан тұрады. Бірінші жолда input() функциясы пайдаланушының өз атын енгізгенін күту үшін қолданылады. Содан кейін енгізілген атау name айнымалысына сақталалды.
Екінші жолда сәлемдесуді енгізілген есіммен бірге шығару үшін print() функциясы қолданылады.
Енді командалық жолды немесе терминалды іске қосып, hello.py бастапқы код файлы орналасқан қалтаға өту үшін cd пәрменін қолданайық (мысалы, менің жағдайда бұл C:\python қалтасы). Келесіде, алдымен интерпретатордың толық жолын, сосын сценарий файлының толық жолын енгізіңіз:
Мысалы, менің жағдайда консольді енгізу қажет болады:
C:\Users\iron\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Python 3.9\python.exe hello.py
Бірақ егер орнату кезінде «Python 3.9-ді PATH-ке қосу» параметрі көрсетілген болса, яғни Python интерпретаторына жол қоршаған ортаның айнымалыларына қосылса, онда аудармашының толық жолының орнына жай ғана python жазуға болады:
python hello.py
Бағдарламаны орындалу барысы төменде көрсетілген:

Сурет 2.4 – hello.py скриптінің жұмыс нәтижесі
PyCharm бағдарлау ортасы
Алдыңғы тақырыпта Python-да қарапайым сценарийді қалай құруға болатындығы сипатталды. Сценарийді құру үшін мәтіндік редактор қолданылады. Оны қарапайым блокнот қосымшасы арқылы құруға болады. Бірақ python скриптерді құру үшін, көптеген функциялары бар арнайы бағдарламалау орталарын(IDE) қолданған жөн.
IDE бізге кодты теру үшін мәтіндік редактор ұсынады, бірақ стандартты мәтіндік редакторлардан айырмашылығы, IDE синтаксисті түстер бойынша ажыратады, автоматты түрде аяқтауды немесе бағдарламалау барысында көмек көрсету, құрылған сценарийді дереу орындау мүмкіндігі және тағы басқа пайдалы функцияларды ұсынады.
Python үшін әр түрлі құрастыру орталары бар, бірақ ең танымалдыларының бірі - JetBrains-тің PyCharm ортасы болып табылады. Бұл орта қарқынды дамып келеді, үнемі жаңартылып отырады және ең кең таралған операциялық жүйелер - Windows, MacOS, Linux үшін арналған.
Алайда оның маңызды бір шектеулігі бар. Атап айтқанда, бұл IDE-нің екі негізгі нұсқасы бар: ақылы кәсіби(professional) және ақысыз қоғамдастық(community). Көптеген негізгі мүмкіндіктер ақысыз Қоғамдастық шығарылымында қол жетімді. Сонымен қатар, веб-әзірлеу сияқты бірқатар мүмкіндіктер тек ақылы нұсқасында ғана қарастырылған.
Біздің жағдайда, біз Қоғамдастықтың тегін нұсқасын қолданамыз. Оны https://www.jetbrains.com/pycharm/download/#section=windows сілтемесіне өтіп, PyCharm Community орнату файлын жүктеп алыңыз. Жүктелгеннен кейін біз оны орнатамыз.
Орнату аяқталғаннан кейін бағдарламаны іске қосыңыз. Оны бірінші рет бастаған кезде бастапқы терезе ашылады:

Сурет 3.1 – PyCharm бағдарламасының алғашқы терезесі
Жаңа жоба жасау үшін New Project пунктін таңдаймыз.
Әрі қарай, бізге жобаны конфигурациялауға арналған терезе ашылады. Орналасу(Location) алаңында сіз жоба сақталатын жолды көрсетуіңіз керек. Менің жағдайда жоба HelloApp қалтасына орналастырылады. Қапшықтың өзі жоба атауы болады.

Сурет 3.2 – Жобаны конфигурациялау терезесі
Айта кету керек, PyCharm жоба параметрлерін шектеуге мүмкіндік береді. Сонымен, келісім бойынша, белгілі бір жоба үшін виртуалды нұсқасын орнатуға мүмкіндік беретін New Environment Using алаңы таңдалады. Содан кейін орнатылған кез-келген қосымша пакеттер тек ағымдағы жобаға қатысты болады. Бұл ыңғайлы, егер біз бірнеше жобалар жасасақ, бірақ олардың әрқайсысы аудармашының белгілі бір нұсқасымен жұмыс істейді. Сонымен қатар, біз Existing Interpreter өрісін таңдап, барлық жобалар үшін глобальды интерпретатор файлына жол қоя аламыз.
Шындығында PyCharm ең қарапайым қосымшасы үшін интерпретатордың қалай орнатылатындығы маңызды емес. Алайда, бұл жағдайда біз келісім бойынша таңдалған «New Environment Using» құсбелгісінен шығамыз және оның астында «Base Interpreter» өрісінде аудармашы файлына жолды көрсетіңіз, оны орнату бірінші тақырыпта қарастырылды.
Create a main.py welcome script нұсқасын таңдағанда бірден жобаға main.py файлын қосуға мүмкіндік береді.
Барлық жолдарды орнатқаннан кейін, жоба жасау үшін Create батырмасын басыңыз.
Осыдан кейін бос жоба жасалады:

Сурет 3.2 – Жобаны конфигурациялау терезесі
Main.py файлы қоршаған ортада белгілі шаблонмен бірге ашылады.
Енді ең қарапайым бағдарламаны құрайық. Ол үшін main.py файлының кодын келесідей өзгертейік:
|
1 2 |
name = input("Есіміңізді енгізіңіз: ") print("Сәлем,", name) |
Сценарийді іске қосу үшін бағдарламаның құралдар тақтасындағы жасыл батырманы басыңыз:

Сурет 3.3 – Жобаны жүргізу
Сондай-ақ, бастау үшін, Run мәзіріне өтіп, Run 'main' батырмасын басуға болады.
Осыдан кейін IDE-нің төменгі жағында шығыс терезесі пайда болады, онда сізге есім енгізу керек, содан кейін бағдарлама нәтижесі терезенің төменгі жағындағыдай көрсетіледі:

Сурет 3.4 – Бағдарламаның орындалу нәтижесі
Visual Studio бағдарламасындағы Python
Python-мен жұмыс істеуге мүмкіндік беретін IDE-нің бірі - Visual Studio. Бұл IDE-нің PyCharm-пен салыстырғандағы артықшылығы, ең алдымен, оның VS 2019 Community тегін шығарылымында бірқатар функциялар мен мүмкіндіктер ақысыз қол жетімді болуы, сол функциялар PyCharm-да тек ақылы Professional Edition нұсқасында қарастырылған. Мысалы, бұл веб-әзірлеу, оның ішінде әр түрлі фреймворктерді қолдану. Сонымен бірге, Visual Studo бағдарламасында Python әзірлеуге арналған құралдар әзірге тек Windows ОЖ нұсқасында қол жетімді.
Сонымен, Visual Studio 2019 Community орнату файлын https://visualstudio.microsoft.com/downloads/ сайтынан жүктеп алайық. Орнату файлын іске қосқаннан кейін орнатылатын Python опцияларының бірін таңдаңыз:

Сурет 4.1 – VS 2019 Community орнату терезесі
Visual Studio бағдарламасын орнатқаннан кейін оны іске қосайық. Мәзірден File (Файл) -> New (Құру) -> Project (Жоба), сонда жаңа жоба жасауға арналған терезе ашылады. Осы терезеде сол жақ мәзірде Python тіліне өтуге болады:

Сурет 4.2 – VS 2019 Community ортасында python тілінде бағдарламалау
Терезенің орталық бөлігінен Python-ді таңдап, біз осы бағдарламалау тілінде қолдана алатын жоба типтерінің бірнеше түрлерін көре аламыз. Бұл веб-әзірлеу, машиналық оқыту және бұлтпен жұмыс істеуге арналған жобалар, жұмыс үстелі қосымшаларына арналған жобалар және т.б. Бұл жағдайда біз жоба типі ретінде Python Application, яғни қарапайым консольдық қосымшалардың түрін таңдап, жаңа жобаны HelloApp деп атаймыз. OK батырмасын басыңыз, сонда Visual Studio жаңа жоба жасайды:

Сурет 4.3 – VS 2019 Community ортасында құрылған жоба құрылымы
Solution Explorer терезесінің оң жағында жоба құрылымын көруге болады. Келісім бойынша біз мына элементтерді көре аламыз:
-
Python Environments: Мұнда сіз барлық қолданылған орталарды көре аласыз, атап айтқанда, осы жерде қолданылатын компилятор туралы ақпаратты таба аласыз;
-
References: бұл түйінде ағымдағы жоба қолданатын барлық сыртқы тәуелділіктер бар;
-
Search Paths: бұл түйін Python модульдерінің іздеу жолдарын анықтауға мүмкіндік береді;
-
HelloApp.py: Python бастапқы файлы
Келісім бойынша, HelloApp.py файлы Visual Studio-да ашық, бірақ ол әзірге бос. Оған келесі жолды қосайық:
|
1 |
print("Hello Python from Visual Studio!") |
Содан кейін құралдар тақтасында іске қосу үшін жасыл батырманы шертіңіз:

Сурет 4.4 – VS 2019 Community жұмыс ортасы
Іске қосу батырмасын басқаннан кейін, бағдарлама нәтижесін көрсететін жол шығады:

Сурет 4.5 – Бағдарламаны іске қосқаннан соңғы нәтиже
Бағдарлама құруды бастау
Python бағдарламасы командалар жиынтығынан тұрады. Әрбір команда жаңа жолға жазылады. Мысалы:
|
1 2 |
print(2 + 3) print("Hello") |
Python-да шегіністер үлкен рөл атқарады. Дұрыс орнатылмаған шегініс іс жүзінде қате болып табылады. Мысалы, дегенмен код жоғарыдағы кодтан айырмашылығы болмасада, келесі жағдайда қате пайда болады:
|
1 2 |
print(2 + 3) print("Hello") |
Сондықтан да, жаңа команданы жолдын басына орналастыру қажет. Бұл питонның C# немесе Java сияқты басқа бағдарламалау тілдерінен маңызды айырмашылықтарының бірі.
Дегенмен, тілдің кейбір құрылымдары бірнеше жолдан тұруы мүмкін екенін есте ұстаған жөн. Мысалы, if шартты операторы:
|
1 2 |
if 1 < 2: print("Hello") |
Бұл жағдайда, егер 1 саны 2-ден аз болса, онда "Hello" жолы көрсетіледі. Мұнда шегініс болуы керек, өйткені басып шығару нұсқаулығы("Hello") өздігінен емес, if шартты операторының бөлігі ретінде қолданылады. Сонымен қатар, шегіністі, кодты жобалау жөніндегі нұсқаулыққа сәйкес, 4-ке бөлінетін бос орындар санынан жасаған жөн (яғни 4, 8, 16 және т.б.), егер шегініс 4 ЕМЕС, 5 болса, онда бағдарлама жұмыс жасай береді.
Мұндай құрылымдар онша көп емес, сондықтан қажет жерде және бос орындарды қоюдың қажеті жоқ жерде көп шатасулар болмауы керек.
Қаріп регистріне тәуелділігі
Python-бұл регистрге тәуелді тіл, сондықтан print және Print немесе PRINT жазулары әртүрлі қызмет атқаруы мүмкін. Егер консольге шығару үшін print әдісінің орнына Print әдісін қолдануға тырыссақ, бізде ештеңе шықпайды:
|
1 |
Print("Hello World") |
Комментарийлер
Кодтың бір немесе басқа бөлігін қандай қызмет атқаратындығын көрсету үшін түсініктемелер(комментарийлер) қолданылады. Бағдарламаны аудару және орындау кезінде аудармашы түсініктемелерді елемейді, сондықтан олар бағдарламаның жұмысына әсер етпейді.
Python-дағы комментарийлер блок және жазба түрінде болады. Олардың барлығы тор белгісімен (#) алдын-ала белгіленеді.
Блоктық комментарийлер жолдың басында қойылады:
|
1 2 |
# Хабарламаны консольға шығару print("Hello World") |
Кіші түсініктемелер тіл нұсқауларымен бірдей жолда орналасқан:
|
1 |
print("Hello World") # Хабарламаны консольға шығару |
Негізгі функциялары
Python бірқатар кірістірілген функцияларды ұсынады. Олардың кейбіреулері өте жиі қолданылады, әсіресе тіл үйренудің бастапқы кезеңдерінде, сондықтан оларды қарастырып өткен жөн.
Ақпаратты консольге шығару үшін - print() функциясы. Консольға шығаратын ақпаратты, біз функцияға аргумент ретінде жібереміз:
|
1 |
print("Hello Python") |
Егер консольге бірнеше мәндерді шығару қажет болса, онда біз оларды, үтір арқылы, басып шығару функциясына бере аламыз:
|
1 |
print("Толық есіміңіз:", "Азамат", "Мусин") |
Нәтижесінде барлық берілген мәндер бір жолда бос орындар арқылы көрсетіледі:
Full name: Азамат Мусин
Егер басып шығару функциясы шығыс үшін жауап берсе, онда енгізу функциясы ақпаратты бағдарламаға енгізуге жауап береді. Қосымша параметр ретінде бұл функция енгізу шақыруын қабылдайды және айнымалыға сақтай алатын енгізілген жолды қайтарады:
|
1 2 |
name = input("Есіміңізді енгізіңіз: ") print("Сәлем", name) |
Консольді шығару:
Есіміңізді енгізіңіз: Азамат
Сәлем Азамат
Айнымалылар мен мәлімет типтері
Айнымалы белгілі бір деректерді сақтайды, оны жадта сақталған белгілі бір мәліметтердің атауы не адресі ретінде қарастыруға болады. Python тіліндегі айнымалы атау алфавиттік таңбадан немесе астын сызу(_) белгісінен басталуы керек және алфавиттік-сандық таңбалар мен астын сызу белгісін қамтуы мүмкін. Сонымен қатар, айнымалының атауы Python тілінің кілт сөздерінің атауымен сәйкес келмеуі керек. Кілт сөздер көп емес, оларды есте сақтау оңай: and, as, assert, break, class, continue, def, del, elif, else, except, False, finally, for, from, global, if, import, in, is, lambda, None, nonlocal, not, or, pass, raise, return, True, try, while, with, yield.
Мысалы, айнымалы құрыңыз:
|
1 |
name = "Tom" |
Мұнда "Tom" жолын сақтайтын name айнымалысы анықталған.
Python-да айнымалы атаудың екі түрі қолданылады: camel case және underscore notation.
Camel case айнымалы атаудағы әрбір жаңа сөз бас әріптен басталады дегенді білдіреді. Мысалы:
|
1 |
userName = "Tom" |
Underscore notation айнымалы атаудағы сөздер астын сызу белгісімен бөлінетінін білдіреді. Мысалы:
|
1 |
user_name = "Tom" |
Сондай-ақ, регистрге тәуелділікті ескеру қажет, сондықтан Name және Name айнымалылары әртүрлі айнымалыларды білдіреді.
Айнымалының тип болады, ол сақталған мәліметтін түріне байланысты болады. Python-да көптеген мәлімет типтері бар, олар топтарға бөлінеді: сандар, реттіліктер, сөздіктер, жиынтықтар:
-
Boolean - логикалық, мәні шын(True) немесе жалған(False)
-
int - бүтін санды білдіреді, мысалы, 1, 4, 8, 50.
-
Float – жылжымалы нүктесі бар сандар, яғни бөлшек сандар, мысалы, 1.2 немесе 34.76
-
complex - күрделі сандар
-
str - жолдар, мысалы "Hello". Python 3 жолдары Unicode кодының таңбалар жиынтығын қолданады
-
bytes - 0-255 диапазонындағы сандар тізбегі
-
byte array - байттар массиві, bytes-ке ұқсас, олар өзгеруі мүмкін
-
list - тізімі
-
tuple - кортеж
-
set - бірегей объектілердің реттелмеген коллекциясы
-
frozen set - set-пен бірдей, тек өзгерту мүмкін емес (immutable)
-
dict -әр элементтің кілті мен мағынасы бар сөздік
Python-динамикалық жадты тіл. Ол берілген мән негізінде айнымалы деректер түрін анықтайды. Сонымен, қос немесе жалғыз тырнақшалардағы жолды белгілеу кезінде айнымалы str түріне ие болады. Бүтін санды тағайындау кезінде Python айнымалы түрін int ретінде автоматты түрде анықтайды. Айнымалыны float нысаны ретінде анықтау үшін оған бөлшек сан беріледі, онда бүтін және бөлшек бөлгіш нүкте болады. Жылжымалы нүкте санын экспоненциалды жазба түрінде анықтауға болады:
|
1 2 3 4 5 |
x = 3.9e3 print(x) # 3900.0 x = 3.9e-3 print(x) # 0.0039 |
Float санында тек 18 маңызды симол болуы мүмкін. Сонымен, бұл жағдайда тек екі таңба қолданылады - 3.9. Егер сан тым үлкен немесе тым аз болса, онда экспонент көмегімен санды ұқсас белгіге жаза аламыз. Жоғарыдағы жазбаларда е әрпі экспонентаны білдіреді, яғни, 3.9 санынан кейін орналасқан және ол сол санды қанша дәрежеге көбейту керектігін көрсетеді. Қарапайым тілмен айтқанда нүктенің қанша позицияға жылжитының көрсетеді, егер таңба болмаса оңға жылжиды, - таңбасы болса, солға жылжитынын көрсетеді.
Сонымен қатар, бағдарлама барысында айнымалы типін оған басқа типтегі мән беру арқылы өзгерте аламыз:
|
1 2 3 4 5 |
user_id = "12tomsmith438" # str типі print(user_id)
user_id = 234 # int типі print(user_id) |
Type() функциясының көмегімен ағымдағы айнымалы типін динамикалық түрде білуге болады:
|
1 2 3 4 5 |
user_id = "12tomsmith438" print(type(user_id)) # <class 'str'>
user_id = 234 print(type(user_id)) # <class 'int'> |
Сандармен орындалатын амалдар
Арифметикалық амалдар
Python барлық жалпы арифметикалық амалдарды қолдайды:
-
+
Екі санды қосу:
-
1
print(6 + 2) # 8
-
-
Екі санды азайту:
-
1
print(6 - 2) # 4
-
*
Екі санды көбейту:
-
-
1
print(6 * 2) # 12
-
-
/
Екі санды бөлу:
|
1 |
print(6 / 2) # 3.0 |
-
//
Екі санның бүтін бөлінуі:
|
1 2 |
print(7 / 2) # 3.5 print(7 // 2) # 3 |
Бұл операция бөлшек бөлігін тастап, бүтін санды бөлу нәтижесін қайтарады
-
**
Дәрежелеу:
|
1 |
print(6 ** 2) # 6-ның 2 дәрежесін шығарамыз. Нәтиже - 36 |
-
%
Бөлуден қалдық алу:
|
1 |
print(7 % 2) # 7-ні 2-ге бөлгендегі қалдық. Нәтиже - 1 |
Бұл жағдайда қалдықсыз 2-ге бөлінетін 7-нің ең жақын саны - 6. Сондықтан, бөлудің қалған бөлігі 7-6 = 1
Бірнеше арифметикалық операцияларды бірінен кейін бірін пайдалану кезінде оларды орындау приоритетіне сәйкес жүргізіледі. Басында үлкен приоритетті операциялар орындалады. Операциялардың приоритеттері келесі кестеде кему реті бойынша келтірілген.
|
Операциялар |
Бағыты |
|
** |
Сол жаққа анықтама |
|
* / // % |
Солдан оңға қарай |
|
+ - |
Солдан оңға қарай |
Келесі өрнекті орындасақ:
|
1 2 |
number = 3 + 4 * 5 ** 2 + 7 print(number) # 110 |
Мұнда үлкен приоритетпен (5 ** 2) операциясы алдымен орындалады, содан кейін нәтиже 4-ке (25 * 4) көбейтіледі, содан кейін қосу (3 + 100) жүреді, содан кейін қайтадан қосу (103 + 7) орындалады.
Операциялардың ретін өз қажеттілігіне байланысты орындау үшін жақшаларды пайдалануға болады:
|
1 2 |
number = (3 + 4) * (5 ** 2 + 7) print(number) # 224 |
Айта кету керек, бүтін сандар да, Бөлшек сандар да арифметикалық операцияларға қатыса алады. Егер бүтін сан (int) және өзгермелі нүкте (float) бір операцияға қатысса, онда бүтін сан float түріне келтіріледі.
Біріктірілген арифметикалық операциялар
Бірқатар арнайы операциялар, операцияның нәтижесін бірінші операндқа бірден сақтауға мүмкіндік береді:
-
+=
Қосу нәтижесін тағайындау
-
-=
Шегеру нәтижесін тағайындау
-
*=
Көбейту нәтижесін тағайындау
-
/=
Бөлу нәтижесін тағайындау
-
//=
Бүтін санды бөлу нәтижесін тағайындау
-
**=
Санның дәрежесін беру
-
%=
Бөлінуден қалған қалдықты беру
Операцияларды қолданудың мысалдары:
|
1 2 3 4 5 6 7 8 9 |
number = 10 number += 5 print(number) # 15
number -= 3 print(number) # 12
number *= 4 print(number) # 48 |
Сандарды түрлендіру функциялары
Python-да бірқатар енгізілген(дайын құрастырылған) функциялар сандармен жұмыс істеуге мүмкіндік береді. Атап айтқанда, int() және float() функциялары мәнді сәйкесінше int және float типіне келтіруге мүмкіндік береді.
Мысалы, бізде келесі код болсын:
|
1 2 3 |
first_number = "2" second_number = 3 third_number = first_number + second_number |
Біз "2" + 3 амалы 5-ке тең болады деп күтеміз. Алайда, бұл код ерекше жағдай туғызады, өйткені бірінші сан жолды білдіреді, дәлірек айтсақ, айнымалылардың типтері сәйкес келмейді. Бәрі дұрыс жұмыс істеуі үшін int() функциясын қолдана отырып, жолды санға келтіру керек:
|
1 2 3 4 |
first_number = "2" second_number = 3 third_number = int(first_number) + second_number print(third_number) # 5 |
Float () функциясы сол сияқты әрекет етеді, ол өзгермелі нүкте санына айналдырады. Бірақ тұтастай алғанда бөлшек сандармен операциялардың нәтижесі дәлдігі дұрыс болмауы мүмкін екенін ескеру қажет. Мысалы:
|
1 2 3 4 |
first_number = 2.0001 second_number = 5 third_number = first_number / second_number print(third_number) # 0.40002000000000004 |
Бұл жағдайда біз 0.40002 санын аламыз деп күтеміз, бірақ соңында нөлдер қатарынан тағы төрт пайда болады. Немесе тағы бір өрнек:
|
1 |
print(2.0001 + 0.1) # 2.1001000000000003 |
Бұл жағдайда нәтижені дөңгелектеу үшін round() функциясын қолдана аламыз:
|
1 2 3 4 |
first_number = 2.0001 second_number = 0.1 third_number = first_number + second_number print(round(third_number, 4)) # 2.1001 |
Функцияның бірінші параметрі - дөңгелектелетін сан, ал екіншісі – нәтижеде, үтірден кейін қалатын сандар саны.
Сандарды көрсету
Сандық айнымалының қалыпты жағдайда, ол ондық жүйеде мән алады. Бірақ Python-да ондықтан басқа, біз екілік, сегіздік және он алтылық жүйелерді қолдана аламыз.
Екілік жүйеде санды анықтау үшін оның мәні алдында 0 және B префиксі қойылады:
|
1 |
x = 0b101 # екілік жүйедегі 101 саны 5 білдіреді |
Сегіздік жүйеде санды анықтау үшін оның мәні алдында 0 және O префиксі қойылады:
|
1 |
a = 0o11 # сегіздік жүйедегі 11 саны 9 білдіреді |
Он алтылық жүйеде санды анықтау үшін оның мәні алдында 0 және X префиксі қойылады:
|
1 |
y = 0x0a # он алты жүйедегі a саны 10 білдіреді |
Шартты өрнектер
Бірқатар операциялар шартты өрнектерді орындай алады. Барлық шартты операциялар екі операндты қабылдайды және оның нәтижесі boolean типін білдіретін логикалық мәнді қайтарады. Логикалық типте тек екі мән бар - True (ақиқат) және False (жалған).
Салыстыру операциялары
Қарапайым шартты өрнектер екі мәнді салыстыратын салыстыру амалдарын қолданады. Python келесі салыстыру амалдарын пайдалануға мүмкіндік береді:
-
==
Егер екі операнд тең болса, True қайтарады. Әйтпесе, ол жалған қайтарады.
-
!=
Егер екі операнд тең болмаса, True қайтарады. Әйтпесе, ол жалған қайтарады.
-
>(артық)
Егер бірінші операнд екіншісінен үлкен болса, True қайтарады.
-
< (кем)
Егер бірінші операнд екіншісінен аз болса, True қайтарады.
-
> = (көп немесе тең)
Егер бірінші операнд екіншісінен үлкен немесе оған тең болса, True қайтарады.
-
< = (аз немесе тең)
Егер бірінші операнд екіншісінен кіші немесе оған тең болса, True қайтарады.
Салыстыру амалдарының мысалдары:
|
1 2 3 4 5 6 7 8 9 10 11 |
a = 5 b = 6 result = 5 == 6 # салыстыру амал нәтижесін айнымалыға сақтаймыз print(result) # False – 5 пен 6 тең емес print(a != b) # True print(a > b) # False – 6-дан 5 төмен print(a < b) # True
bool1 = True bool2 = False print(bool1 == bool2) # False - bool1 мәні bool2 мәніне тең емес |
Салыстыру операциялары әртүрлі типтерді - жолдарды, сандарды, логикалық мәндерді салыстыра алады, алайда операцияның екі операндасы да бірдей типті көрсетуі керек.
Логикалық операциялар
Күрделі шартты өрнектерді жасау үшін логикалық амалдар қолданылады. Python-да келесі логикалық операторлар бар:
-
and (логикалық көбейту)
Егер екі өрнек те шын болса, True қайтарады
|
1 2 3 4 |
age = 22 weight = 58 result = age > 21 and weight == 58 print(result) # True |
Бұл жағдайда and операторы екі өрнектің нәтижелерін салыстырады: age > 21 weight == 58. Егер осы екі өрнек те True-ді қайтарса, онда and операторы да True-ді қайтарады.
|
1 2 3 4 5 |
age = 22 weight = 58 isMarried = False result = age > 21 and weight == 58 and isMarried print(result) # False, өйткені isMarried = False |
-
or (логикалық қосу)
Егер өрнектердің кем дегенде біреуі шын болса, True қайтарады
|
1 2 3 4 |
age = 22 isMarried = False result = age > 21 or isMarried print(result) # True, өйткені age > 21 нәтижесі True болады |
-
not (логикалық теріске шығару)
Егер өрнек жалған болса, True қайтарады
|
1 2 3 4 |
age = 22 isMarried = False print(not age > 21) # False print(not isMarried) # True |
Егер and операторының операндтарының бірі жалған қайтарса, онда екінші операнд орындалмайды, өйткені оператор кез-келген жағдайда жалған қайтарады. Мұндай ерекшелік өнімділікті сәл арттыруға мүмкіндік береді, өйткені екінші операндты бағалауға кететін ресурстарды жұмсаудың қажеті жоқ.
Сол сияқты, егер or операторының операндтарының бірі True-ді қайтарса, онда екінші операнд тексерілмейді, өйткені оператор кез-келген жағдайда True-ді қайтарады.
Жолдармен операциялар
Жол тырнақшаға орналастырылған Unicode кодтаудағы таңбалар тізбегін білдіреді. Python-да біз жалғыз және қос тырнақшаларды қолдана аламыз:
|
1 2 3 |
name = "Tom" surname = 'Smith' print(name, surname) # Tom Smith |
Жолдардағы ең көп таралған операциялардың бірі - оларды біріктіру немесе байланыстыру. Жолдарды біріктіру үшін қосу белгісі қолданылады:
|
1 2 3 4 |
name = "Tom" surname = 'Smith' fullname = name + " " + surname print(fullname) # Tom Smith |
Екі жолды біріктіргенде бәрі оңай, бірақ жол мен санды қосу керек болса ше? Бұл жағдайда str() функциясын қолдана отырып, санды жолға келтіру керек:
|
1 2 3 4 |
name = "Tom" age = 33 info = "Name: " + name + " Age: " + str(age) print(info) # Name: Tom Age: 33 |
Эскейп-реттер
Стандартты таңбалардан басқа, жолдарда арнайы түрде оқылатын басқарушы эскап тізбегін қамтуы мүмкін. Мысалы, \n тізбегі жаңа жолды білдіреді. Сондықтан келесі өрнек:
|
1 |
print("Қонаққа баратын уақыт келді \nмені ескі досым тосып тұр") |
Нәтижесінде консольде екі жол көрсетіледі:
Қонаққа баратын уақыт келді
мені ескі досым тосып тұр
\t тізбегіде жолға табуляция белгісін енгізеді.
Сонымен қатар, жолда қолдану қиын болып көрінетін таңбалар бар. Мысалы, тырнақша. Жолдың ішінде тырнақшаларды (екі және жалғыз) көрсету үшін олардың алдына қиғаш сызық қойылады:
|
1 |
print("\"Central Perk\" кафесі") |
Жолдарды салыстыру
Жолдарды салыстыру туралы ерекше айту керек. Жолдарды салыстыру кезінде таңбалар мен олардың регистрі(Бас әріп пен кіші әріп) ескеріледі. Сонымен, сандық таңба кез-келген алфавиттік таңбадан аз болады. Жоғарғы регистрдегі алфавиттік таңба төменгі регистрдегі алфавиттік таңбаларға қарағанда шартты түрде аз. Мысалы:
|
1 2 3 4 5 |
str1 = "1a" str2 = "aa" str3 = "Aa" print(str1 > str2) # False, өйткені str1 айнымалысының бірінші мәні сан print(str2 > str3) # True, өйткені str2 айнымалысының бірінші мәні төменгі регистрде |
Сондықтан "1A" жолы шартты түрде "АА" жолынан аз. Алдымен салыстыру бірінші таңбамен жүреді. Егер екі жолдың бастапқы таңбалары сандарды білдірсе, онда кіші сан аз деп саналады, мысалы, "1A" "2A" - ден аз.
Егер бастапқы таңбалар алфавиттік таңбаларды бір регистрде көрсетсе, онда олар алфавит бойынша көрінеді. Сонымен, "аа" "ба"- дан аз, ал "ба" "ca" - дан аз.
Егер бірінші таңбалар бірдей болса, екінші таңбалар салыстырылады, егер олар бар болса.
Регистрге тәуелділік әрдайым қажет емес, өйткені іс жүзінде біз бірдей жолдармен жұмыс жасаймыз. Бұл жағдайда салыстырудан бұрын біз екі жолды да регистрлердің біріне апара аламыз.
lower() функциясы жолды төменгі регистрге, ал upper() функциясы жоғарғы регистрге аударады.
|
1 2 3 4 5 |
str1 = "Tom" str2 = "tom" print(str1 == str2) # False – жолдар тең емес
print(str1.lower() == str2.lower()) # True |
Шартты оператор if
Шартты конструкциялар шартты өрнектерді қолданады және олардың мәніне байланысты бағдарламаның орындалу бағыты өзгереді. Осындай құрылымдардың бірі-if конструкциясы. Оның құрылымы төменде көрсетілген:
|
1 2 3 4 5 6 |
if логикалық өрнек: командалар [elif логикалық өрнек: командалар] [else: командалар] |
Қарапайым түрде, if кілт сөзінен кейін логикалық өрнек жазылады. Егер бұл логикалық өрнек true-ді қайтарса, онда келесі нұсқаулар блогы орындалады, олардың әрқайсысы жаңа ағыннан басталып, жолдың басынан шегіністер болуы керек:
|
1 2 3 4 |
age = 22 if age > 21: print("Рұқсат бар") print("Жұмыстың аяқталуы") |
Бұл жағдайда age айнымалысының мәні 21-ден үлкен болғандықтан, if блогы орындалады, ал консоль келесі жолдарды шығарады:
Рұқсат бар
Жұмыстың аяқталуы
Шегіністі 4 бос орынға немесе 4-ке көбейтілген бос орындар санына жасаған жөн.
"Жұмыстың аяқталуы" хабарын көрсететін соңғы ағынға назар аударыңыз. Жолдың басынан ешқандай шегініс жоқ, сондықтан ол if блогына жатпайды және кез-келген жағдайда орындалады, тіпті егер if конструкциясында өрнек жалған мәнін қайтарса да.
Бірақ егер біз шегініс жасасақ, онда ол if дизайнына да қатысты болар еді:
|
1 2 3 4 |
age = 22 if age > 21: print("Рұқсат бар ") print("Жұмыстың аяқталуы ") |
Егер кенеттен бізге шартты өрнектің мәні жалған болғанда қолданатын амал қажети болса, онда біз else блогын қолдана аламыз:
|
1 2 3 4 5 |
age = 18 if age > 21: print("Рұқсат бар") else: print("Рұқсат жоқ") |
Егер age > 21 өрнегі шын мәнін қайтарса, онда if блогы орындалады, әйтпесе басқа else блогы орындалады.
Егер сізге бірнеше нұсқада шарттарды енгізу қажет болса, онда сіз командалары бар қосымша elif блоктарын қолдана аласыз.
|
1 2 3 4 5 6 7 |
age = 18 if age >= 21: print("Рұқсат бар") elif age >= 18: print("Рұқсат жартылай бар") else: print("Рұқсат жоқ") |
Кұрделі if конструкциялары
If конструкциясының ішіне өз кезегінде басқа if конструкцияларын енгізе аламыз:
|
1 2 3 4 5 6 7 |
age = 18 if age >= 18: print("17-ден көп") if age > 21: print("21-ден көп") else: print("18-ден 21-ге дейін") |
Күрделі if өрнектері де шегіністерден басталуы керек, ал кірістірілген конструкциялардағы командаларда да шегіністерге ие болуы керек. Дұрыс орналастырылмаған шегіністер бағдарламаның логикасын өзгерте алады. Сонымен, алдыңғы мысал келесіге ұқсас емес:
|
1 2 3 4 5 6 7 |
age = 18 if age >= 18: print("17-ден көп") if age > 21: print("21-ден көп") else: print("18-ден 21-ге дейін") |
Енді біз шартты конструкцияларды қолданатын шағын бағдарламаны жазамыз. Бұл бағдарлама айырбастау пунктінің бір түрі болады:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# Айырбастау пунктінің бағдарламасы
usd = 57 euro = 60
money = int(input("Аударатын соманы енгізіңіз: ")) currency = int(input("Валюта кодын енгізіңіз (доллар - 400, евро - 401): "))
if currency == 400: cash = round(money / usd, 2) print("Валюта: АҚШ доллары") elif currency == 401: cash = round(money / euro, 2) print("Валюта: евро") else: cash = 0 print("Белгісіз валюта")
print("Аударылған сома:", cash) |
Input () функциясын қолдана отырып, пайдаланушы енгізген деректерді консольге аламыз. Сонымен қатар, бұл функция деректерді жол түрінде қайтарады, сондықтан енгізілген деректерді арифметикалық амалдарда қолдануға болатындай етіп int() функциясын қолдана отырып, оны бүтін санға келтіру керек.
Бағдарлама пайдаланушы айырбасталатын қаражат мөлшерін және айырбасталатын валюта кодын енгізетінін білдіреді. Валюта кодтары қарапайым түрде алынған: доллар үшін 400 және евро үшін 401.
If конструкциясын қолдана отырып, біз валюта кодын тексеріп, тиісті валюта бағамына бөлеміз. Бөлу процесінде өзгермелі нүктесі бар өте ұзақ сан пайда болғандықтан, онда үтірден кейін көптеген белгілер болуы мүмкін, ол round() функциясын қолдана отырып, үтірден кейін екі санға дейін дөңгелектенеді.
Соңында алынған мән консольге көрсетіледі. Мысалы, бағдарламаны іске қосыңыз және кейбір деректерді енгізіңіз:
Аударатын соманы енгізіңіз: 20000
Dfk.nf rjlsy (доллары - 400, евро - 401): 401
Валюта: евро
К получению: 333.33
Циклдар
Циклдар, белгілі бір шарттың сақталуына байланысты, кейбір әрекеттерді қайталауға мүмкіндік береді.
While циклі
Біз қарастыратын бірінші цикл - бұл while цикл. Оның келесі ресми синтаксисі бар:
|
1 2 |
while шарт: командалар |
Кілт сөзден кейін нартты өрнек көрсетіледі және while ішінде орналасқан командалар, шартты өрнек ақиқат мән қайтарғанда ғана орындалады.
Циклге кіретін барлық командалар келесі жолдарда орналасқан және жолдың басынан шегініс болуы керек.
|
1 2 3 4 5 6 |
choice = "y"
while choice.lower() == "y": print("Сәлем") choice = input("Жалғастыру үшін Y басыңыз, ал шығу үшін кез-келген пернені басыңыз: ") print("Бағдарлама жұмысы тоқтады") |
Бұл жағдайда таңдау циклі "Y" немесе "y"латын әрпі болған кезде жалғасады.
Мына мысалда цикл блогының өзі екі командадан тұрады. Алдымен "Сәлем" хабары көрсетіледі, содан кейін choice айнымалысы үшін жаңа мән енгізіледі. Егер пайдаланушы Y-тен басқа пернені басса, циклден шығу пайда болады, өйткені таңдау choice.lower() == "y" жалған мәнді қайтарады. Мұндай циклдің әрбір қайталануы итерация деп аталады.
Сондай-ақ, соңғы басып шығару print("Бағдарлама жұмысы тоқтады ") командасында жолдың басынан шегініс жоқ, сондықтан ол циклге кірмейді.
Келесі мысал - факториалды есептеу:
|
1 2 3 4 5 6 7 8 9 |
#! Факториалды есептеу бағдарламасы
number = int(input("Сан енгізіңіз: ")) i = 1 factorial = 1 while i <= number: factorial *= i i += 1 print(number, " санының факториалы тең ", factorial) |
Мұнда ол консольге пернеден белгілі бір санды енгізеді, цикл енгізілген сан i айнымалысынан үлкен немесе тең болса қайталай береді, егер і айнымалысы енгізілген саннан кіші болған жағдайда, цикл жұмысы тоқтатылады.
Консольді шығару:
Нөмірді енгізіңіз: 6
6 санының факториалы тең 720
For циклы
For конструкциясы цмклдың басқа түрін ұсынады. For циклі белгілі бір сандар жиынтығындағы әр сан үшін орындалады. Сандар жиынтығы range () функциясы арқылы құрылады. Ресми цикл синтаксисі:
|
1 2 |
for int_var in range_функциясы: командалар |
For кілт сөзінен кейін бүтін сандарды сақтайтын int_var айнымалысы жазылады (айнымалы атауы кез келген болуы мүмкін), содан кейін in кілт сөзі, range() функциясын шақыру және қос нүкте.
Келесі жолдан бастап цикл нұсқауларының блогы орналасқан, олар жолдың басынан шегіністерге ие болуы керек.
Циклды орындау кезінде Python range функциясы жасаған коллекциядан барлық сандарды алып int_var айнымалысында сақтап отырады. Бірінші итерация кезінде цикл жиыннын(коллекция) бірінші санды алады, екіншісінде - екінші сан және т.б., жиындағы барлық сандарды қолдануға int_var айнымалысына көшіріп шығады.
Факториалды есептеу мысалын қарастырайық:
|
1 2 3 4 5 6 7 |
#! Факториалды for циклымен есептеу
number = int(input("Санды енгіз: ")) factorial = 1 for i in range(1, number+1): factorial *= i print(number, " санының факториалы тең ", factorial) |
Алдымен консольден сан енгізіледі. Циклде біз range функциясы жасаған коллекциядағы сандар сақталатын і айнымалысын анықтаймыз.
Мұнда range функциясы екі аргументті алады - жинақтың бастапқы саны (мұнда 1 саны) және соңғы сан (яғни number +1).
Консольден 6 саны енгізілді делік, содан кейін range функциясын шақыру келесі форманы алады:
|
1 |
range(1, 6+1): |
Бұл функция 1-ден басталатын және 7-ге дейін бүтін сандармен толтырылатын коллекция жасайды. Яғни, бұл жинақ [1, 2, 3, 4, 5, 6] болады.
Циклды орындау кезінде сандар осы коллекциядан і айнымалыға ауысады, ал циклдің өзінде і айнымалы факториалға көбейтіледі. Нәтижесінде біз санның факториалдық мәнін аламыз.
Бағдарлама нәтижесін консольге шығару:
Санды енгізіңіз: 6
6 санының факториалы тең 720
Range функциясы
Range функциясы келесі формаларға ие:
-
range(stop): 0-ден stop-қа дейінгі барлық бүтін сандарды қайтарады
-
range(start, stop): start (қоса) бастап stop (қоса) дейінгі аралықтағы барлық бүтін сандарды қайтарады. Жоғарыда факториалды бағдарламада дәл осы форма қолданылды.
-
range (start, stop, step): start (қоса алғанда) бастап stop (қоса алғанда) дейінгі аралықта бүтін сандарды қайтарады, олар step мәніне артып отырады(қадамы).
Range функциясының қолдану мысалдары:
|
1 2 3 4 |
range(5) # 0, 1, 2, 3, 4 range(1, 5) # 1, 2, 3, 4 range(2, 10, 2) # 2, 4, 6, 8 range(5, 0, -1) # 5, 4, 3, 2, 1 |
Мысалы, 0-ден 4-ке дейінгі барлық сандарды шығарамыз:
|
1 2 |
for i in range(5): print(i, end=" ") |
Күрделі циклдар
Кейбір циклдардың ішінде басқа циклдер болуы мүмкін. Көбейту кестесін шығару мысалын қарастырайық:
|
1 2 3 4 |
for i in range(1, 10): for j in range(1, 10): print(i * j, end="\t") print("\n") |
for i in range(1, 10) сыртқы циклы 9 рет іске қосылады, өйткені range функциясымен қайтарылған коллекцияда 9 сан болады. Ішкі цикл for j in range(1, 10) сыртқы циклдің бір итерациясы үшін 9 рет, ал сыртқы циклдің барлық итерациялары үшін сәйкесінше 81 рет іске қосылады.
Ішкі циклдің әр итерациясында i және j сандарының көбейтіндісі консольге шығарылады.:
1 2 3 4 5 6 7 8 9
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56 63
8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81
Циклден шығу. break және continue
Циклды басқару үшін break және continue арнайы кілт сөздерін пайдалануға болады. Break операторы циклден шығуды жүзеге асырады. Ал continue операторы циклдің келесі итерациясына көшуді орындайды.
Break мәлімдемесін циклде оны одан әрі орындауға сәйкес келмейтін жағдайлар пайда болған кезде қолдануға болады. Келесі мысалды қарастырыңыз:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#! Ақша аудару пункті бағдарламасы
print("Шығу үшін Y батырмасын басыңыз")
while True: data = input("Айырбастау сомасын енгізіңіз: ") if data.lower() == "y": break # циклден шығу money = int(data) cache = round(money/ 455, 2) print("Берілетін ақша ", cache, " доллар")
print("Аудару пунктінің жұмысы бітті") |
Мұнда біз шексіз циклмен айналысамыз, өйткені while True шарты әрқашан шынайы және әрқашан орындалады. Бұл шексіз орындалуы керек бағдарламаларды құрудың танымал әдісі.
Циклде біз консольден кіріс аламыз. Пайдаланушы сан енгізеді деп болжаймыз - айырбастау үшін шартты ақша сомасы. Егер пайдаланушы "Y" немесе "y" әрпін енгізсе, онда break операторының көмегімен біз циклден шығып, бағдарламаны тоқтатамыз. Әйтпесе, енгізілген соманы айырбастау бағамына бөлеміз, round функциясын қолдана отырып, нәтижені дөңгелектеп, оны консольге шығарамыз. Сонымен, пайдаланушы y пернесін басу арқылы бағдарламадан шыққысы келгенше шексіздікке дейін бағдарлама жұмыс жасай береді.
Бағдарламаны консольдік шығару:
Шығу үшін Y батырмасын басыңыз
Айырбастау сомасын енгізіңіз: 20000
Берілетін ақша 43.95 доллар
Айырбастау сомасын енгізіңіз: Y
Аудару пунктінің жұмысы бітті
Бірақ пайдаланушы теріс санды енгізсе ше? Бұл жағдайда бағдарлама теріс нәтиже береді, бұл дұрыс емес. Бұл жағдайда, есептеуден бұрын, мәннің нөлден аз екенін тексеріп аламыз, ал егер аз болса, continue операторын қолдана отырып, оны аяқтамай циклдің келесі итерациясына ауысуды орындай аламыз:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#! Ақша аудару пункті бағдарламасы
print("Шығу үшін Y батырмасын басыңыз ")
while True: data = input("Айырбастау сомасын енгізіңіз: ") if data.lower() == "y": break # циклден шығу money = int(data) if money < 0: print("Енгізілген сан оң болу қажет!") continue cache = round(money / 455, 2) print("Берілетін ақша ", cache, " доллар")
print("Аудару пунктінің жұмысы бітті ") |
Сондай-ақ, Нұсқаулық while блогына немесе кірістірілген if дизайнына жататындығын анықтау үшін шегіністер қайтадан қолданылатынына назар аударамын.
Бұл жағдайда біз теріс сома үшін нәтиже ала алмаймыз:
Шығу үшін Y батырмасын басыңыз
Айырбастау сомасын енгізіңіз: -20000
Енгізілген сан оң болуы керек!
Айырбастау сомасын енгізіңіз: 20000
Берілетін ақша 43.95 доллар
Аудару пунктінің жұмысы бітті
Функциялар
Функциялар белгілі бір тапсырманы орындайтын және бағдарламаның басқа бөліктерінде қайта пайдалануға болатын код блогын білдіреді. Функцияның ресми синтаксисі:
|
1 2 |
def функции_атауы ([параметрлері]): командалар |
Функцияның анықтамасы функцияның атауынан, параметрлері бар жақшалар жиынтығынан және қос нүктеден тұратын def өрнегінен басталады. Жақшадағы параметрлер міндетті емес. Келесі жолдан функция орындайтын командалар блогы орналасады. Функцияның барлық командаларында жолдың басынан шегіністер бар, осылай python функцияға кіретін командаларды анықтайды.
Мысалы, қарапайым функцияны анықтау:
|
1 2 |
def say_hello(): print("Hello") |
Функция say_hello деп аталады. Оның параметрлері жоқ және ол консольге "Hello" жолын көрсететін бір командадан тұрады.
Функцияны шақыру үшін функцияның атауы көрсетіледі, содан кейін жақшада оның барлық параметрлері үшін мәндер беріледі. Мысалы:
|
1 2 3 4 5 6 |
def say_hello(): print("Hello")
say_hello() say_hello() say_hello() |
Мұнда say_hello функциясы қатарынан үш рет шақырылады. Нәтижесінде консольге келесі нәтиже шығады:
Hello
Hello
Hello
Енді функцияны параметрлермен анықтап және қолданып көрейік:
|
1 2 3 4 5 6 |
def say_hello(name): print("Сәлем, ", name)
say_hello("Айбар") say_hello("Азамат") say_hello("Айша") |
Функция name параметрін қабылдайды және функция шақырылған кезде, параметрдің орнына мәнді жібере аламыз:
Сәлем, Айбар
Сәлем, Азамат
Сәлем, Айша
Келісім бойынша мәндері
Функцияның кейбір параметрлерін функцияны анықтаған кезде олар үшін келісім мәндерді орната аламыз. Мысалы:
|
1 2 3 4 5 |
def say_hello(name="Айбар"): print("Сәлем, ", name)
say_hello() say_hello("Сұлтан") |
Мұнда name параметрі міндетті емес. Егер функцияны шақырған кезде оған мән берілмесе, онда келісім мән қолданылады, яғни "Айбар" есімі.
Атауы бар параметрлер
Мәндерді беру кезінде функция оларды берілген ретпен параметрлермен салыстырады. Мысалы, келесі функция болсын:
|
1 2 3 4 |
def display_info(name, age): print("Есімі: ", name, "\t", "Жасы: ", age)
display_info("Айбар", 22) |
Функция шақырылған кезде бірінші "Айбар" мәні бірінші параметрге - name параметріне, екінші мән - 22 саны екінші параметр - age параметріне беріледі. Осылай рет бойынша кете береді. Алайда, аталған параметрлерді пайдалану ретін өзгертуге болады:
|
1 2 3 4 |
def display_info(name, age): print("Name:", name, "\t", "Age:", age)
display_info(age=22, name="Tom") |
Аталған параметрлер функция шақырылған кезде, оған параметр мәнін атауымен бірге көрсету қажет.
Саны белгісіз параметрлер
Жұлдызша таңбасын пайдаланып параметрлердің белгісіз санын анықтауға болады:
|
1 2 3 4 5 6 7 8 9 10 11 |
def sum(*params): result = 0 for n in params: result += n return result
sumOfNumbers1 = sum(1, 2, 3, 4, 5) # 15 sumOfNumbers2 = sum(3, 4, 5, 6) # 18 print(sumOfNumbers1) print(sumOfNumbers2) |
Бұл жағдайда sum функциясы бір параметрді алады - *params, бірақ параметр атауының алдындағы жұлдызша, шын мәнінде, осы параметрдің орнына бірнеше мәндер санын немесе мәндер жиынтығын бере алатынымызды көрсетеді. Функцияның өзінде for циклін қолдана отырып, сіз осы жиынтықтан өтіп, берілген мәндермен әртүрлі әрекеттер жасай аласыз. Мысалы, бұл жағдайда сандардың қосындысы қайтарылады.
Нәтижені қайтару
Функция нәтижені қайтара алады. Ол үшін функцияда қайтару операторы қолданылады, содан кейін қайтару мәні көрсетіледі:
|
1 2 3 4 5 6 7 8 9 10 |
def exchange(usd_rate, money): result = round(money/usd_rate, 2) return result
result1 = exchange(60, 30000) print(result1) result2 = exchange(56, 30000) print(result2) result3 = exchange(65, 30000) print(result3) |
Функция мәнді қайтаратындықтан, біз бұл мәнді кез-келген айнымалыға тағайындай аламыз, содан кейін оны қолдана аламыз: result2 = exchange(56, 30000).
Python-да функция бірден бірнеше мәнді қайтара алады:
|
1 2 3 4 5 6 7 |
def create_default_user(): name = "Айбар" age = 33 return name, age
user_name, user_age = create_default_user() print("Есімі: ", user_name, "\t Жасы: ", user_age) |
Мұнда create_default_user функциясы екі мәнді қайтарады: name және age. Функция шақырылған кезде бұл мәндер рет-ретімен user_name және user_age айнымалыларына беріледі және біз оларды қолдана аламыз.
Main функция
Бағдарламада көптеген функцияларды анықтауға болады. Олардың барлығын ретке келтіру үшін арнайы негізгі функцияны қосу жақсы тәжірибе болып саналады, онда басқа функциялар шақырылады:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
def main(): say_hello("Айбар") usd_rate = 56 money = 30000 result = exchange(usd_rate, money) print("Берілетін ақша ", result, " доллар")
def say_hello(name): print("Сәлем, ", name)
def exchange(usd_rate, money): result = round(money/usd_rate, 2) return result
# main функциясын шақыру main() |
Айнымалылардың көріну облыстары
Көріну облысы немесе scope оны пайдалануға болатын айнымалының аймағын анықтайды. Python-да айнымалының көріну аймағына байланысты екі түрі болады: ғаламдық және жергілікті(глобальды және локальды).
Ғаламдық айнымалы кез-келген функциядан тыс анықталады және бағдарламадағы кез-келген функция оны қолдана алады. Мысалы:
|
1 2 3 4 5 6 7 8 9 10 |
name = "Айбар"
def say_hi(): print("Сәлем ", name)
def say_bye(): print("Сау бол ", name)
say_hi() say_bye() |
Мұнда name айнымалысы ғаламдық және ғаламдық ауқымға ие. Мұнда анықталған екі функция да оны еркін пайдалана алады.
Жергілікті айнымалының ғаламдық айнымалыдан ерекшелігі, функцияның ішінде анықталады және тек осы функциядан қол жетімді, яғни жергілікті ауқымға ие:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
def say_hi(): name = "Самат" surname = "Саматов" print("Сәлем ", name, surname)
def say_bye(): name = "Айбар" print("Сау бол ", name)
say_hi() say_bye() |
Бұл жағдайда екі функцияның әрқайсысында жергілікті name айнымалылары анықталады. Бұл айнымалылар бірдей аталғанымен, бірақ бұл екі түрлі айнымалы, олардың әрқайсысы тек өз функциялары аясында қол жетімді. Сондай-ақ, say_hi функциясында surname айнымалысы анықталған, ол жергілікті, сондықтан say_bye функциясында біз оны пайдалана алмаймыз.
Егер біз жергілікті функцияда ғаламдық айнымалыны өзгерткіміз келсе және жергілікті айнымалыны анықтамасақ, онда global кілт сөзін қолдануымыз керек:
|
1 2 3 4 |
def say_bye(): global name name = "Bob" print("Good bye", name) |
Python-да, көптеген басқа бағдарламалау тілдеріндегідей, ғаламдық айнымалыларды пайдаланбаған жөн. Оларды, көбінесе, өзгертілмейтін бірнеше сандар ұшін қолдануға бролады.
|
1 2 3 4 5 6 7 8 9 |
PI = 3.14
# дөңгелектің аумағын есептеу def get_circle_square(radius):
print("Дөңгелектің аумағы ", radius, " радиусы бойынша тең ", PI * radius * radius)
get_circle_square(50) |
Бұл жағдайда 3.14 саны Pi тұрақтысымен ұсынылған. Бұл мән негізінен өзгермейді, сондықтан оны функциялардан шығарып, тұрақты ретінде анықтауға болады. Әдетте, тұрақты атау бас әріптермен анықталады.
Модульдер
Python тіліндегі модуль басқа бағдарламаларда қайта пайдалануға болатын коды бар жеке файлды білдіреді.
Модульді құру үшін модульді білдіретін *.py кеңейтімі бар нақты файлды құру керек. Файл атауы модульдің атауын бірдей болады. Содан кейін бұл файлда бір немесе бірнеше функцияны анықтау керек.
Бағдарламаның негізгі файлы hello.py деп аталсын, біз оған сыртқы модульдерді қосып көрейік.
Модульді қосу үшін алдымен жаңа модульді анықтаңыз: біз шақыратын жаңа account.py файлын құрайық, hello.py орналасқан қалтада құрылуы керек. Егер PyCharm немесе басқа IDE қолданылса, онда екі файл да бір жобаға сәйкес келеді.
Python-дағы Модульдер

Сурет 2 – Python модульдері
Тиісінше, модуль account деп аталады және онда келесі кодты анықтаңыз:
|
1 2 3 4 5 6 7 |
def calculate_income(rate, money, month): if money <= 0: return 0
for i in range(1, month+1): money = round(money + money * rate / 100 / 12, 2) return money |
Мұнда calculate_income функциясы анықталған, ол параметрлер ретінде салымның пайыздық мөлшерлемесін, салым сомасын және салым салынатын кезеңді алады және осы кезеңнің соңында алынған соманы есептейді.
Енді осы модуль функциясын біз hello.py файлында қолданамыз:
|
1 2 3 4 5 6 7 8 9 10 11 |
#! Банктік есеп бағдарламасы import account
rate = int(input("Пайыздық мөлшерлемені енгізіңіз: ")) money = int(input("Соманы енгізіңіз: ")) period = int(input("Шотты жүргізу кезеңін айлармен енгізіңіз: "))
result = account.calculate_income(rate, money, period) print("Есептеу параметрлері:\n", "Сома: ", money, "\n", "Пайыз: ", rate, "\n", "Кезең: ", period, "\n", "Кезеңнің соңындағы шот сомасыв: ", result) |
Модульді пайдалану үшін оны импорт операторының көмегімен импорттау керек, содан кейін модульдің аты көрсетіледі: import account.
Модульдің функционалдығына қол жеткізу үшін оның аттар кеңістігін алу керек. Келісім бойынша, ол модульдің атымен сәйкес келеді, яғни біздің жағдайда ол да account аталады.
Модуль атауларының кеңістігін алғаннан кейін, біз оның функцияларына келесі схема арқылы қатынай аламыз атаулар_кеңістігі.функция:
|
1 |
account.calculate_income(rate, money, period) |
Осыдан кейін біз негізгі hello.py сценарийін іске қоса аламыз және ол account.py модулін өз жұмысында қолдана алады, атап айтқанда, консоль шығысы келесідей болуы мүмкін:
Пайыздық мөлшерлемені енгізіңіз: 10
Соманы енгізіңіз: 300000
Шотты жүргізу кезеңін айлармен енгізіңіз: 6
Шот параметрлері:
Сомасы: 300000
Пайыз: 10
Кезең: 6
Кезеңнің соңындағы шот сомасы: 315315.99
Келісім бойынша, модульді импорттаған кезде, ол сол атау кеңістігі арқылы қол жетімді. Алайда, біз бұл ережені өзгерте аламыз. Сонымен, as кілт сөзі модульді басқа аттар кеңістігімен қолдануға мүмкіндік береді. Мысалы:
|
1 2 3 4 5 |
import account as acc
#...............
result = acc.calculate_income(rate, money, period) |
Бұл жағдайда аттар кеңістігі acc деп аталады.
Тағы бір опция модульдің функционалдығын from кілт сөзін қолдана отырып, ағымдағы модульдің Ғаламдық аттар кеңістігіне импорттау мүмкіндік береді:
|
1 2 3 4 5 |
from account import calculate_income
#...............
result = calculate_income(rate, money, period) |
Бұл жағдайда біз account модулінен ғаламдық аттар кеңістігіне calculate_income функциясын импорттаймыз. Сондықтан біз оны модуль атауын көрсетпей пайдалана аламыз.
Егер account модулінде бірнеше функция болса, оларды ғаламдық аттар кеңістігіне бір өрнекпен импорттауға болады:
|
1 2 3 4 5 |
from account import *
#...............
result = calculate_income(rate, money, period) |
Бірақ айта кету керек, жаһандық аттар кеңістігіне импорттау функция атауларының қақтығыстарына әкелуі мүмкін. Мысалы, егер бізде бірдей файлда бірдей функция анықталған болса, онда функцияны шақырған кезде қате пайда болуы мүмкін. Сондықтан импортты Ғаламдық аттар кеңістігіне пайдаланудан аулақ болған жөн.
Ерекшеліктерді өңдеу
Python-да бағдарламалау кезінде біз қателіктердің екі түріне тап болуымыз мүмкін. Бірінші тип синтаксистік қателерді білдіреді (syntax error). Олар бастапқы кодты жазу кезінде бағдарламалау тілінің синтаксисін бұзу нәтижесінде пайда болады. Егер мұндай қателер болса, бағдарламаны құрастыру мүмкін емес. Қандай да бір құрастыру ортасында(IDE) жұмыс істеген кезде, мысалы, PyCharm-да, IDE-нің өзі синтаксистік қателерді таба алады және оларды қандай да бір жолмен ерекшелей алады.
Қателердің екінші түрі - орындау қателері (runtime error). Олар бағдарлама орындау барысында пайда болады. Мұндай қателіктер ерекше жағдайлар деп те аталады. Мысалы, өткен тақырыптарда біз санды жолға түрлендіруді қарастырдық:
|
1 2 3 |
string = "5" number = int(string) print(number) |
Бұл сценарий сәтті құрастырылып, орындалады, өйткені "5" жолын санға айналдыруға болады. Алайда тағы бір мысал келтірейік:
|
1 2 3 |
string = "hello" number = int(string) print(number) |
Бұл сценарийді орындау кезінде ValueError-дан ерекшелігі пайда болады, өйткені "hello" жолын санға айналдыруға болмайды. Бір жағынан, мұнда жол санды білдірмейтіні анық, бірақ қолданушыны мәлімет енгізген кезде дұрыс емес, біз күткендей болмауы мүмкін:
|
1 2 3 |
string = input("Введите число: ") number = int(string) print(number) |
Ерекшелік болған кезде бағдарламаның жұмысы үзіледі және мұндай олқылық болдырмау үшін Python-да ерекше жағдайларды өңдеу үшін try .. except конструкциясы бар, оның ресми синтаксисі:
|
1 2 3 4 |
try: командалар except [ерекше_жағдай_типі]: командалар |
Ерекшелік туындауы мүмкін барлық негізгі код try кілт сөзінен кейін орналастырылады. Егер осы кодта ерекшелік пайда болса, онда try блогындағы кодтың жұмысы үзіліп, орындау except блогына өтеді.
Ерекшелік кілт сөзінен кейін қандай ерекшелік өңделетінін көрсетуге болады (мысалы, ValueError немесе KeyError). Except сөзінен кейін, ерекше жағдай туындаған кезде орындалатын командалар орналасады.
Жолды санға түрлендіру мысалында ерекше жағдайды өңдеуді қарастырайық:
|
1 2 3 4 5 6 |
try: number = int(input("Сан енгізіңіз: ")) print("Енгізілген сан:", number) except: print("Түрлендіру сәтсіз аяқталды") print("Бағдарламаны аяқтау") |
Жолды енгізіңіз:
Сан енгізіңіз: Сәлем
Түрлендіру сәтсіз аяқталды
Бағдарламаны аяқтау
Консоль шығысынан көрініп тұрғандай, сан орнына жолды енгізген кезде консольге санды шығармайды және бағдарламаның орындалуы except блогына өтеді.
Дұрыс санды енгізсек:
Нөмірді енгізіңіз: 22
Енгізілген сан: 22
Бағдарламаны аяқтау
Енді бәрі дұрыс орындалады, ерекшелік туындамайды және сәйкесінше except блогы орындалмайды.
Жоғарыдағы мысалда, кодта пайда болуы мүмкін барлық ерекшеліктер бірден өңделді. Алайда, біз except сөзінен кейін, өңделетін ерекшеліктің түрін анықтай аламыз:
|
1 2 3 4 5 6 |
try: number = int(input("Сан енгізіңіз: ")) print("Енгізілген сан:", number) except ValueError: print("Санды түрлендіру сәтсіз аяқталды") print("Бағдарламаны аяқтау") |
Егер жағдай бағдарламада әр түрлі ерекшеліктер пайда болуы мүмкін болса, онда біз оларды қосымша except өрнектерін қолдана отырып жеке-жеке өңдей аламыз:
|
1 2 3 4 5 6 7 8 9 10 11 |
try: number1 = int(input("Бірінші санды енгізіңіз: ")) number2 = int(input("Екінші санды енгізіңіз: ")) print("Бөлу нәтижесі:", number1/number2) except ValueError: print("Түрлендіру сәтсіз аяқталды") except ZeroDivisionError: print("Санды нөлге бөлу әрекеті анықталды") except Exception: print("Жалпы ерекшеліктер") print("Бағдарламаны аяқтау") |
Егер жолды санға түрлендіру нәтижесінде ерекшелік болса, онда ол except ValueError блогымен өңделеді. Егер екінші сан нөлге тең болса, яғни нөлге бөлу әрекеті пайда болады, ал математика ережелері бойынша сан нөлге бөлінбейді және оны zerodivisionerror except блогы өңдейді.
Ерекшелік түрі барлық ерекше жағдайларға ұшырайтын жалпы ерекшелікті білдіреді. Сондықтан, бұл жағдайда ValueError немесе ZeroDivisionError түрін көрсетпейтін кез-келген ерекшелік ерекше ерекшелік блогында өңделеді:.
Finally блогы
Ерекше жағдайларды өңдеу кезінде қосымша finally блогын пайдалануға болады. Бұл блок ерекшелік туындаса да, туындамаса да орындалады:
Әдетте, finally блогы файлдарды жабу сияқты, пайдаланылатын ресурстарды босату үшін қолданылады.
Ерекше жағдай жайлы ақпарат алу
As операторының көмегімен біз ерекше жағдай жайлы барлық ақпаратты айнымалыға жібере аламыз, оны артынан except блогында пайдалануға болады:
|
1 2 3 4 5 6 |
try: number = int(input("Сан енгізіңіз: ")) print("енгізілген сан:", number) except ValueError as e: print("Ерекше жағдай жайлы мәліметтер", e) print("Бағдарламаны аяқтау") |
Қате енгізу мысалы:
Сан енгізіңіз: fdsf
Ерекше жағдай жайлы мәліметтер invalid literal for Int () with base 10: 'fdsf'
Бағдарламаны аяқтау
Ерекше жағдайларды ұйымдастыру
Кейде осы немесе басқа ерекше жағдайларды қолмен жасау қажет. Ол үшін raise операторы қолданылады.
|
1 2 3 4 5 6 7 8 9 10 11 |
try: number1 = int(input("Бірінші санды енгізіңіз: ")) number2 = int(input("Екінші санды енгізіңіз: ")) if number2 == 0: raise Exception("Екінші сан 0-ге тең болмауы қажет") print("Екі санды бөлу нәтижесі:", number1/number2) except ValueError: print("Енгізілген мәліметтер дұрыс емес") except Exception as e: print(e) print("Бағдарламаны аяқтау") |
Ерекше жағдайды шақырған кезде біз оған хабарлама жібере аламыз, содан кейін оны пайдаланушыға шығаруға болады:
Бірінші санды енгізіңіз: 1
Екінші санды енгізіңіз: 0
Екінші сан 0-ге тең болмауы керек
Бағдарламаны аяқтау
3 бөлім. Тізімдер, кортеждер және сөздіктер
Тізім
Деректер жиынтығымен жұмыс істеу үшін Python тізімдер, кортеждер және сөздіктер сияқты күрделі мәлімет типтерін ұсынады.
Тізім (list) элементтер жиынтығын немесе реттілігін сақтайтын деректер түрін білдіреді. Төртбұрышты жақшада ([]) тізімді құру үшін оның барлық элементтері үтір арқылы тізімделеді. Көптеген бағдарламалау тілдерінде массив деп аталатын ұқсас мәліметтер құрылымы бар. Мысалы, сандар тізімін анықтайық:
|
1 |
numbers = [1, 2, 3, 4, 5] |
Сондай-ақ, тізімді құру үшін list конструкторын пайдалануға болады():
|
1 2 |
numbers1 = [] numbers2 = list() |
Бұл тізім құру ережелерінің жұмысы ұқсас - олар бос тізімді жасайды.
Тізімді құру үшін list конструкторы басқа тізімді қабылдай алады:
|
1 2 |
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9] numbers2 = list(numbers) |
Тізім элементтеріне қатынау үшін тізімдегі элемент нөмірін білдіретін индекстерді пайдалану керек. Индекстер нөлден басталады. Яғни, екінші элементте 1 индексі болады. Ал тізімнің элементтеріне соңынан қатынаса, индекс -1-ден бастап, теріс индекстерді қолдануға болады. Яғни, соңғы элементте -1 индексі, ал оның алдындағы -2 және т.б. болады.
|
1 2 3 4 5 6 7 |
numbers = [1, 2, 3, 4, 5] print(numbers[0]) # 1 print(numbers[2]) # 3 print(numbers[-3]) # 3
numbers[0] = 125 # тізімнің бірінші элементін өзгертеміз print(numbers[0]) # 125 |
Егер сіз бірдей мәнді бірнеше рет қайталайтын тізімді жасауыңыз керек болса, онда жұлдызша * таңбасын пайдалануға болады. Мысалы, алты бестен тұратын тізімді анықтау үшін:
|
1 2 |
numbers = [5] * 6 # [5, 5, 5, 5, 5, 5] print(numbers) |
Сонымен қатар, егер бізге сандардың реттелген тізімі қажет болса, оны жасау үшін range функциясын қолдану ыңғайлы, бұл функцияны қолданудың 3 әдісі бар:
-
range (end): 0-ден end санына дейінгі сандар жиынтығы құрылады
-
range( start, end): start санынан end санына дейінгі сандар жиынтығы құрылады
-
range( start, end, step): start санынан бастап, step қадаммен end санына дейінгі сандар жиынтығы құрылады
|
1 2 3 4 5 6 |
numbers = list(range(10)) print(numbers) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] numbers = list(range(2, 10)) print(numbers) # [2, 3, 4, 5, 6, 7, 8, 9] numbers = list(range(10, 2, -2)) print(numbers) # [10, 8, 6, 4] |
Мысалы, тізімнің келесі екі анықтамасы бірдей жұмыс атқарады, бірақ range функциясы арқылы біз код көлемін азайтамыз:
|
1 2 |
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9] numbers2 = list(range(1, 10)) |
Тізімде тек бір типті нысандар болуы міндетті емес. Біз бір уақытта бір тізімге жолдарды, сандарды, басқа деректер түрлерінің нысандарын орналастыра аламыз:
|
1 |
objects = [1, 2.6, "Hello", True] |
Тізімнің барлық элементтеріне қатынау
Тізім элементтерін санау үшін сіз for циклін де, while циклін де қолдана аласыз.
Цикл арқылы санау:
|
1 2 3 |
companies = ["Microsoft", "Google", "Oracle", "Apple"] for item in companies: print(item) |
Мұнда range функциясының орнына біз қол жетімді компаниялар тізімін бірден алмастыра аламыз.
While циклі арқылы қатынау:
|
1 2 3 4 5 |
companies = ["Microsoft", "Google", "Oracle", "Apple"] i = 0 while i < len(companies): print(companies[i]) i += 1 |
Len () функциясын пайдаланып, санау үшін, біз тізімнің ұзындығын анықтаймыз. I санауышты пайдаланып, санауыштың мәні тізімнің ұзындығына тең болғанша элементті консольға шығарып береді.
Тізімдерді салыстыру
Екі тізім бірдей элементтер жиынтығын қамтыса, тең деп саналады:
|
1 2 3 4 5 6 |
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9] numbers2 = list(range(1,10)) if numbers == numbers2: print("numbers equal to numbers2") else: print("numbers is not equal to numbers2") |
Бұл жағдайда екі тізім де тең болады.
Тізімдермен жұмыс істеу әдістері мен функциялары
Элементтерді басқару үшін тізімдерде бірқатар әдістер бар. Олардың жиі қолданылатындары:
-
append(item): тізімнің соңына item элементін қосады;
-
insert (index, item): тізімге index индексі бойынша item элементін қосады
-
remove(item) : item элементін жояды. Элементтің бірінші енгізуі ғана жойылады. Егер элемент табылмаса, ValueError ерекшелігі пайда болады
-
clear (): тізімнен барлық элементтерді жою
-
index(item): item элементінің индексін қайтарады. Егер элемент табылмаса, ValueError ерекшелік пайда болады
-
pop ([index]): index индексі бойынша элементті жояды және қайтарады. Егер индекс берілмесе, онда ол соңғы элементті жояды.
-
count (item): item элементінің тізімдегі санын қайтарады
-
sort ([key]): элементтерді сұрыптайды. Келісім бойынша өсу бойынша сұрыптайды. Бірақ key параметрімен сұрыптау функциясын бере аламыз.
-
reverse (): тізімдегі барлық элементтерді кері ретпен орналастырады
Сонымен қатар, Python тізімдермен жұмыс істеу үшін бірқатар енгізілген функцияларды ұсынады:
-
len (list): тізімнің ұзындығын қайтарады
-
sortired (list, [key]): сұрыпталған тізімді қайтарады
-
min (тізім): тізімнің ең кіші элементін қайтарады
-
max (list): тізімнің ең үлкен элементін қайтарады
Элементтерді қосу және жою
Элементті қосу үшін append() және insert() әдістері қолданылады, ал жою үшін remove(), pop() және clear () әдістері қолданылады.
Әдістерді пайдалану тәсілдері:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
users = ["Tom", "Bob"]
# тізім соңына қосу users.append("Alice") # ["Tom", "Bob", "Alice"] # Екінші орынға енгізу users.insert(1, "Bill") # ["Tom", "Bill", "Bob", "Alice"]
# Элемент индексін алу i = users.index("Tom") # алынған индекс бойынша элементті жою removed_item = users.pop(i) # ["Bill", "Bob", "Alice"]
last_user = users[-1] # соңғы элементті жою users.remove(last_user) # ["Bill", "Bob"]
print(users)
# Барлық элементтерді жою users.clear() |
Элементтің бар-жоғын тексеру
Егер белгілі бір элемент табылмаса, remove және index әдістері ерекше жағдай туғызады. Мұндай жағдайды болдырмау үшін, элементпен жұмыс жасамас бұрын, оның бар-жоғын in кілт сөзімен тексеруге болады:
|
1 2 3 4 5 6 |
companies = ["Microsoft", "Google", "Oracle", "Apple"] item = "Oracle" # жойылатын элемент if item in companies: companies.remove(item)
print(companies) |
Егер элемент тізімде болса, item in companies өрнегі АҚИҚАТ мәнін қайтарады. Сондықтан, if item in companies құрылымы тізімде элементтің болуына байланысты келесі нұсқаулар блогын орындай алады.
Элементтерді есептеу
Егер тізімде белгілі бір элемент қанша рет бар екенін білу қажет болса, count() әдісін қолдануға болады:
|
1 2 3 4 |
users = ["Tom", "Bob", "Alice", "Tom", "Bill", "Tom"]
users_count = users.count("Tom") print(users_count) # 3 |
Сұрыптау
Өсу бойынша сұрыптау үшін sort() әдісі қолданылады:
|
1 2 3 4 |
users = ["Tom", "Bob", "Alice", "Sam", "Bill"]
users.sort() print(users) # ["Alice", "Bill", "Bob", "Sam", "Tom"] |
Егер деректерді кері ретпен сұрыптау қажет болса, сұрыпталғаннан кейін reverse() әдісін қолдана аламыз:
|
1 2 3 4 5 |
users = ["Tom", "Bob", "Alice", "Sam", "Bill"]
users.sort() users.reverse() print(users) # ["Tom", "Sam", "Bob", "Bill", "Alice"] |
Сұрыптау кезінде іс жүзінде екі объект салыстырылады және олардың қайсысы "кішірек", сол "үлкенірек" элемент алдына қойылып отырылады. "Көбірек" және "аз" ұғымдары өте шартты. Егер сандар үшін бәрі қарапайым болса - сандар өсу ретімен реттеледі, ал жолдар мен басқа нысандар үшін жағдай күрделірек. Атап айтқанда, жолдар бірінші таңбалар бойынша бағаланады. Егер бірінші таңбалар тең болса, екінші таңбалар және т.б. бағаланады. Сандық таңба алфавиттік бас таңбадан гөрі "аз" деп саналады, ал бас таңба кіші әріптен кіші болып саналады. Жолдарды салыстыру туралы толығырақ жолдармен операциялар бөлімінде сипатталған.
Осылайша, егер тізім жоғарғы және төменгі регистрдегі жолдарды біріктірсе, онда біз дұрыс емес нәтижелерге қол жеткізе аламыз, өйткені біз үшін "bob" жолы "Tom"жолына дейін тұруы керек. Стандартты сұрыптау әрекетін өзгерту үшін sort () параметрі ретінде функция жібере аламыз:
|
1 2 3 4 |
users = ["Tom", "bob", "alice", "Sam", "Bill"]
users.sort(key=str.lower) print(users) # ["alice", "Bill", "bob", "Sam", "Tom"] |
Сұрыптау әдісінен басқа, біз екі формасы бар енгізілген sorted функциясын қолдана аламыз:
-
sorted (list): list тізімін сұрыптайды
-
sorted (list, key): list тізімін элементтерге key функциясын қолдану арқылы сұрыптайды
|
1 2 3 4 |
users = ["Tom", "bob", "alice", "Sam", "Bill"]
sorted_users = sorted(users, key=str.lower) print(sorted_users) # ["alice", "Bill", "bob", "Sam", "Tom"] |
Бұл функцияны пайдалану кезінде сұрыпталған тізімді өзгертпейтінін және барлық сұрыпталған элементтерді нәтиже ретінде қайтарылатын жаңа тізімге енгізетінін ескеру қажет.
Минималды және максималды мәндер
Python-ның енгізілген min() және max() функциялары тізімнен сәйкесінше минималды және максималды мәндерді табуға мүмкіндік береді:
|
1 2 3 |
numbers = [9, 21, 12, 1, 3, 15, 18] print(min(numbers)) # 1 print(max(numbers)) # 21 |
Тізімдерді көшіру
Тізімдерді көшіру кезінде тізімдер өзгеретін типті білдіретінін ескеру керек, сондықтан егер екі айнымалы да бірдей тізімді көрсетсе, онда бір айнымалының өзгеруі басқа айнымалыға да әсер етеді:
|
1 2 3 4 5 6 |
users1 = ["Tom", "Bob", "Alice"] users2 = users1 users2.append("Sam") # users1 және users2 екеуі де бір тізімді қолданып тұр print(users1) # ["Tom", "Bob", "Alice", "Sam"] print(users2) # ["Tom", "Bob", "Alice", "Sam"] |
Бұл "жеңіл көшіру" деп аталады (shallow copy). Әдетте, мұндай әрекет жасаған жағымсыз. Элементтерді көшіру үшін, бірақ сонымен бірге айнымалылар әртүрлі тізімдерді көрсету қажет болса, терең көшіру қолдану керек (deep copy). Ол үшін енгізілген copy модулінде анықталған deepcopy() әдісін қолдануға болады:
|
1 2 3 4 5 6 7 8 |
import copy
users1 = ["Tom", "Bob", "Alice"] users2 = copy.deepcopy(users1) users2.append("Sam") # users1 және users2 айнымалылары екі түрлі объектіні білдіреді print(users1) # ["Tom", "Bob", "Alice"] print(users2) # ["Tom", "Bob", "Alice", "Sam"] |
Тізімнің бір бөлігін көшіру
Егер сіз бүкіл тізімді емес, оның белгілі бір бөлігін ғана көшіруіңіз керек болса, онда біз келесі арнайы синтаксистерді қолдана аламыз:
-
list [: end]: end параметрі арқылы, сол элементке дейін көшірілетін элемент индексі беріледі
-
list [start: end]: start параметрі өажетті элементтердің бастапқы индексін көрсетеді
-
list [start: end : step]: step параметрі элементтер тізімнен көшірілетін қадамды көрсетеді. келісім бойынша, бұл параметр 1-ге тең.
|
1 2 3 4 5 6 7 8 9 10 |
users = ["Tom", "Bob", "Alice", "Sam", "Tim", "Bill"]
slice_users1 = users[:3] # 0-ден 3-ке дейін print(slice_users1) # ["Tom", "Bob", "Alice"]
slice_users2 = users[1:3] # 1-ден 3-ке дейін print(slice_users2) # ["Bob", "Alice"]
slice_users3 = users[1:6:2] # 1-ден 6-ға дейін 2 қадаммен print(slice_users3) # ["Bob", "Sam", "Bill"] |
Тізімдерді қосу
Тізімдерді біріктіру үшін қосу операциясы қолданылады (+):
|
1 2 3 4 |
users1 = ["Tom", "Bob", "Alice"] users2 = ["Tom", "Sam", "Tim", "Bill"] users3 = users1 + users2 print(users3) # ["Tom", "Bob", "Alice", "Tom", "Sam", "Tim", "Bill"] |
Тізімдер тізімі
Тізімдер стандартты жолдар, сандар сияқты деректерден басқа, басқа тізімдерді де қамтуы мүмкін. Мұндай тізімдерді кірістірілген тізімдер, жолдар ретінде әрекет ететін, кестелермен байланыстыруға болады. Мысалы:
|
1 2 3 4 5 6 7 8 |
users = [ ["Tom", 29], ["Alice", 33], ["Bob", 27] ] print(users[0]) # ["Tom", 29] print(users[0][0]) # Tom print(users[0][1]) # 29 |
Кірістірілген тізім элементіне жүгіну үшін бірнеше индекстерді пайдалану керек: users [0][1] - бірінші кірістірілген тізімнің, екінші элементінің индекстері.
Жалпы тізімді, сондай-ақ кірістірілген тізімдерді қосу, жою және өзгерту әдеттегі (бір өлшемді) тізімдерге ұқсас:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
users = [ ["Tom", 29], ["Alice", 33], ["Bob", 27] ] # Күрделі тізі құру user = list() user.append("Bill") user.append(41) # Енгізілген тізімді қосу users.append(user)
print(users[-1]) # ["Bill", 41]
# Енгізілген тізімге қосу users[-1].append("+79876543210")
print(users[-1]) # ["Bill", 41, "+79876543210"]
# Енгізілген тізімнен жою users[-1].pop() print(users[-1]) # ["Bill", 41]
# соңғы енгізілген тізімді жою users.pop(-1)
# Бірінші элементті жою users[0] = ["Sam", 18] print(users) # [ ["Sam", 18], ["Alice", 33], ["Bob", 27]] |
Ішкі тізімдерге қатынау:
|
1 2 3 4 5 6 7 8 |
users = [ ["Tom", 29], ["Alice", 33], ["Bob", 27] ] for user in users: for item in user: print(item, end=" | ") |
Консольге шығару:
Tom | 29 | Alice | 33 | Bob | 27 |
Кортеж
Кортеж (tuple) элементтердің тізбегін білдіреді, олар тізімге ұқсас, тек кортеж өзгермейтін (immutable) түрі болып табылады. Сондықтан біз кортеж элементтерін қосып немесе алып тастай алмаймыз, оны өзгерте де алмаймыз.
Кортежді құру үшін, оларды жақшалардың ішіне, мәндерін үтірмен бөліп орналастыру керек:
|
1 2 |
user = ("Tom", 23) print(user) |
Сондай-ақ, кортежді анықтау үшін біз жақшаларды қолданбай, үтір арқылы мәндерді тізімдеп жаза аламыз:
|
1 2 |
user = "Tom", 23 print(user) |
Егер кенеттен кортеж бір элементтен тұрса, онда бір элементтен кейін үтір қою керек:
|
1 |
user = ("Tom",) |
Тізімнен кортеж жасау үшін, тізімді, кортеж қайтаратын tuple () функциясына беруге болады:
|
1 2 3 |
users_list = ["Tom", "Bob", "Kate"] users_tuple = tuple(users_list) print(users_tuple) # ("Tom", "Bob", "Kate") |
Кортеж ішіндегі элементтерге қатынау, тізімдегі сияқты индекс бойынша жүргізіледі. Сонымен қатар, элементтерді индекстеу, тізімнің индекстеуімен бірдей, кортеждің басынан алған кезде нөлден басталады және элементтерді тізімнің соңынан алған кезде -1 басталады:
|
1 2 3 4 5 6 7 |
users = ("Tom", "Bob", "Sam", "Kate") print(users[0]) # Tom print(users[2]) # Sam print(users[-1]) # Kate
# кортеждің 2-ден 4-ші элементіне дейін бөлігін алу print(users[1:4]) # ("Bob", "Sam", "Kate") |
Бірақ кортеж өзгермейтін тип болғандықтан (immutable), біз оның элементтерін өзгерте алмаймыз. Яғни, келесі жазба жұмыс істемейді:
|
1 |
users[1] = "Tim" |
Қажет болса, біз кортеж элементтерін жеке айнымалылар ретінде жасай аламыз:
|
1 2 3 4 5 |
user = ("Tom", 22, False) name, age, isMarried = user print(name) # Tom print(age) # 22 print(isMarried) # False |
Функциядан бірден бірнеше мәнді қайтару қажет болған кезде түйіндерді пайдалану әсіресе ыңғайлы. Функция бірнеше мәнді қайтарған кезде, ол іс жүзінде кортежге оралады:
|
1 2 3 4 5 6 7 8 9 10 11 |
def get_user(): name = "Tom" age = 22 is_married = False return name, age, is_married
user = get_user() print(user[0]) # Tom print(user[1]) # 22 print(user[2]) # False |
Кірістірілген Len() функциясын қолдана отырып, сіз кортеж ұзындығын ала аласыз:
|
1 2 |
user = ("Tom", 22, False) print(len(user)) # 3 |
Кортежді санау
Кортежді санау үшін сіз for және while стандартты циклдерін қолдана аласыз. for циклі үшін:
|
1 2 3 |
user = ("Tom", 22, False) for item in user: print(item) |
While циклі үшін:
|
1 2 3 4 5 6 |
user = ("Tom", 22, False)
i = 0 while i < len(user): print(user[i]) i += 1 |
Тізім сияқты, in кортеж өрнегін пайдаланып, сіз кортежде элементтің бар-жоғын тексере аласыз:
|
1 2 3 4 5 6 |
user = ("Tom", 22, False) name = "Tom" if name in user: print("Қолданушының есімі Tom") else: print("Қолданушының есімі басқа") |
Күрделі кортеждер
Бір кортежде элементтер түрінде басқа кортеждер болуы мүмкін. Мысалы:
|
1 2 3 4 5 6 7 8 9 10 11 |
countries = ( ("Germany", 80.2, (("Berlin",3.326), ("Hamburg", 1.718))), ("France", 66, (("Paris", 2.2),("Marsel", 1.6))) )
for country in countries: countryName, countryPopulation, cities = country print("\nCountry: {} population: {}".format(countryName, countryPopulation)) for city in cities: cityName, cityPopulation = city print("City: {} population: {}".format(cityName, cityPopulation)) |
Мұнда елдерді білдіретін countries кортежі әрқайсысы, бөлек ел болатын, кортеждерден тұрады.
Енгізілген кортеждердің үш элементі бар: елдің атауы, оның халқы мен қаласы. Қалалар жеке кортежді білдіреді, мұнда әрбір жеке қала - бұл қаланың атауы мен оның тұрғындарының саны бар ішкі кортеж.
Сөздіктер
Тізімдер және кортеждермен қатар, Python-да сөздік (dictionary) деп аталатын тағы бір мәліметтер құрылымы бар. Бірқатар бағдарламалау тілдерінде де, ұқсас құрылымдар бар екенін айта кеткен жөн(C# сөздігі, PHP-дегі ассоциативті массив).
Тізім сияқты, сөздік элементтер жинағын сақтайды. Бірақ, сөздіктегі әр элементтің өзіндік мәні бар ерекше кілт бар болады.
Сөздік анықтау үшін келесі синтаксисті қолдану керек:
|
1 |
dictionary = { кілт1: мән1, кілт2: мән2, ....} |
Бірнеше сөздікті анықтайық:
|
1 2 3 |
users = {1: "Tom", 2: "Bob", 3: "Bill"}
elements = {"Au": "Алтын", "Fe": "Темір", "H": "Сутегі", "O": "Оттегі"} |
Users сөздігінде сандар кілт ретінде, ал жолдар мән ретінде қолданылады. Elements сөздігінде жолдар кілт ретінде қолданылады.
Бірақ кілттер мен жолдар бірдей болуы міндетті емес. Олар әр түрлі типтен тұра алады:
|
1 |
objects = {1: "Tom", "2": True, 3: 100.6} |
Сондай-ақ, біз бос сөздікті элементтерсіз анықтай аламыз:
|
1 |
objects = {} |
немесе :
|
1 |
objects = dict() |
Тізімнен сөздікке түрлендіру
Сөздік пен тізімнің құрылымдары өзгеше болғанымен, тізімдердің жекелеген түрлері үшін оларды dict() функциясын қолдана отырып сөздікке айналдыру мүмкіндігі бар. Ол үшін тізім кірістірілген тізімдер жиынтығын сақтауы керек. Әрбір кірістірілген тізім екі элементтен тұруы керек-сөздікке айналдырылған кезде бірінші элемент кілт болады, ал екіншісі-мән:
|
1 2 3 4 5 6 7 |
users_list = [ ["+111123455", "Tom"], ["+384767557", "Bob"], ["+958758767", "Alice"] ] users_dict = dict(users_list) print(users_dict) # {"+111123455": "Tom", "+384767557": "Bob", "+958758767": "Alice"} |
Сол сияқты, сөздікке екі өлшемді түйіндерді түрлендіруге болады, олар өз кезегінде екі элементтен тұрады:
|
1 2 3 4 5 6 7 |
users_tuple = ( ("+111123455", "Tom"), ("+384767557", "Bob"), ("+958758767", "Alice") ) users_dict = dict(users_tuple) print(users_dict) |
Элементтерді қолдану және өзгерту
Сөздік элементтеріне қатынау үшін кілтті пайдалану керек:
|
1 |
dictionary[кілт] |
Мысалы, сөздіктегі элементтерді аламыз және өзгертеміз:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
users = { "+11111111": "Tom", "+33333333": "Bob", "+55555555": "Alice" }
# "+11111111" кілті бойынша элементті аламыз print(users["+11111111"]) # Tom
# "+33333333" кілті бар элементке мән орнату users["+33333333"] = "Bob Smith" print(users["+33333333"]) # Bob Smith |
Егер мұндай кілті бар элементтің мәнін орнату кезінде сөздікте болмаса, онда ол қосылады:
|
1 |
users["+4444444"] = "Sam" |
Егер біз сөздікте жоқ кілтпен мән алуға тырыссақ, онда Python KeyError қатесін жасайды:
|
1 |
user = users["+4444444"] # KeyError |
Бұл жағдайды ескерту үшін элементке хабарласпас бұрын сөздіктегі кілттің бар-жоғын кілт in сөздік өрнегін қолдана отырып тексере аламыз. Егер кілт сөздікте болса, онда бұл өрнек ақиқат мәнін қайтарады:
|
1 2 3 4 5 6 |
key = "+4444444" if key in users: user = users[key] print(user) else: print("Элемент табылмады") |
Сондай-ақ, элементтерді алу үшін get әдісін қолдануға болады, оның екі түрі бар:
-
get(key): key кілті бар элементті сөздіктен қайтарады. Егер мұндай кілті бар элемент болмаса, онда None мәнін қайтарады;
-
get(key, default): сөздіктен key кілті бар элементті қайтарады. Егер мұндай кілті бар элемент болмаса, келісім мәнді default қайтарады.
|
1 2 3 |
key = "+55555555" user = users.get(key) user = users.get(key, "Unknown user") |
Өшіру
Элементті кілтпен жою үшін del операторы қолданылады:
|
1 2 3 4 5 6 7 8 |
users = { "+11111111": "Tom", "+33333333": "Bob", "+55555555": "Alice" }
del users["+55555555"] print(users) |
Бірақ егер мұндай кілт сөздікте болмаса, онда KeyError ерекшелігі пайда болатынын ескерген жөн. Сондықтан, элементті жоймас бұрын, осы кілт бойынша элементтің бар-жоқтығын тексерген жөн.
|
1 2 3 4 5 6 7 |
key = "+55555555" if key in users: user = users[key] del users[key] print(user, "жойылды") else: print("Элемент табылған жоқ") |
Жоюдың тағы бір түрі - pop() әдісі. Оның да екі формасы бар:
-
pop(key): элементті key кілті арқылы жояды және жойылған элементті қайтарады. Егер осы кілті бар элемент болмаса, онда KeyError ерекшелік пайда болады;
-
pop(key, default): элементті key кілті арқылы жояды және жойылған элементті қайтарады. Егер осы кілті бар элемент болмаса, онда default мәні қайтарылады.
|
1 2 3 4 5 6 7 8 9 10 11 |
users = { "+11111111": "Tom", "+33333333": "Bob", "+55555555": "Alice" } key = "+55555555" user = users.pop(key) print(user)
user = users.pop("+4444444", "Unknown user") print(user) |
Егер барлық элементтерді жою қажет болса, онда бұл жағдайда clear() әдісін қолдануға болады:
|
1 |
users.clear() |
Сөздіктерді көшіру және біріктіру
Copy() әдісі жаңа сөздікті қайтару арқылы сөздік мазмұнын көшіреді:
|
1 2 |
users = {"+1111111": "Tom","+3333333": "Bob","+5555555": "Alice"} users2 = users.copy() |
Update() әдісі екі сөздікті біріктіреді:
|
1 2 3 4 5 6
7 |
users = {"+1111111": "Tom","+3333333": "Bob","+5555555": "Alice"}
users2 = {"+2222222": "Sam","+6666666": "Kate"} users.update(users2)
print(users) # {"+1111111": "Tom", "+3333333": "Bob", "+5555555": "Alice", "+2222222": "Sam", "+6666666": "Kate"} print(users2) # {"+2222222": "Sam", "+6666666": "Kate"} |
Бұл жағдайда users2 сөздігі өзгеріссіз қалады. Басқа сөздіктің элементтері қосылған users сөздігі өзгертіледі. Бірақ егер екі бастапқы сөздіктің де өзгеріссіз болуы қажет болса және біріктірудің нәтижесін үшінші сөздікке көшіру қажет болса, онда сіз бір сөздікті екіншісіне алдын-ала көшіре аласыз:
|
1 2 |
users3 = users.copy() users3.update(users2) |
Cөздікті санау
Сөздікті санау үшін сіз for циклын қолдана аласыз:
|
1 2 3 4 5 6 7 |
users = { "+11111111": "Tom", "+33333333": "Bob", "+55555555": "Alice" } for key in users: print(key, " - ", users[key]) |
Элементтерді санау кезінде біз ағымдағы элементтің кілтін аламыз және ол арқылы элементтің өзін ала аламыз.
Элементтерді санаудың тағы бір тәсілі - items() әдісін қолдану:
|
1 2 |
for key, value in users.items(): print(key, " - ", value) |
Items() әдісі кортеждер жиынтығын қайтарады. Әрбір кортежде элементтің кілті мен мәні бар, оны санау кезінде біз бірден key және value айнымалыларына қатынай аламыз.
Кілттерді санау және мәндерді санау мүмкіндіктері де бар. Кілттерді санау үшін біз сөздікте keys() әдісін шақыра аламыз:
|
1 2 |
for key in users.keys(): print(key) |
Шынын айтсақ, бұл санау әдісінің мағынасы жоқ, өйткені keys() әдісін шақырмай, біз жоғарыда көрсетілгендей кілттерді санай аламыз.
Тек мәндерді санау үшін біз сөздікте values() әдісін шақыра аламыз:
|
1 2 |
for value in users.values(): print(value) |
Кешенді сөздіктер
Сандар мен жолдар сияқты қарапайым объектілерден басқа, сөздіктер күрделі нысандарды да сақтай алады - тізімдер, кортеждер немесе сөздіктер:
|
1 2 3 4 5 6 7 8 9 10 11 |
users = { "Tom": { "phone": "+971478745", "email": "tom12@gmail.com" }, "Bob": { "phone": "+876390444", "email": "bob@gmail.com", "skype": "bob123" } } |
Бұл жағдайда сөздіктің әр элементінің мәні өз кезегінде жеке сөздікті білдіреді.
Кірістірілген сөздіктің элементтеріне жүгіну үшін сәйкесінше екі кілтті пайдалану керек:
|
1 2 |
old_email = users["Tom"]["email"] users["Tom"]["email"] = "supertom@gmail.com" |
Бірақ егер біз сөздікте жоқ кілттің мәнін алуға тырыссақ, Python-ның KeyError ерекшелігі пайда болады:
|
1 |
tom_skype = users["Tom"]["skype"] # KeyError |
Қатені болдырмау үшін сөздіктегі кілттің бар-жоғын тексеруге болады:
|
1 2 3 4 5 |
key = "skype" if key in users["Tom"]: print(users["Tom"]["skype"]) else: print("skype is not found") |
Қалған амалдар ұшін, күрделі және кірістірілген сөздіктерге қарапайым сөздіктермен жұмыс істейтін амалдарды қолданамыз және жұмыс принципі ұқсас.
Жиындар
Жиын (set) элементтер жиынтығының тағы бір түрін білдіреді. Жиындарды анықтау үшін элементтер фигуралық жақшалар қолданылады:
|
1 2 |
users = {"Tom","Bob","Alice", "Tom"} print(users) # {"Tom","Bob","Alice"} |
Print функциясы "Tom" элементін бір рет шығарғанына қарамастан, бұл элемент жиынның анықтамасында екі рет кездесетініне назар аударыңыз. Себебі жиынтықта тек ерекше мәндер бар.
Сондай-ақ, жиындарды анықтау үшін элементтердің тізімі немесе жиынтығы берілетін set() функциясын қолдануға болады:
|
1 |
users3 = set(["Mike", "Bill", "Ted"]) |
Бос жиын жасау үшін set функциясын қолдану ыңғайлы:
|
1 |
users = set() |
Жиынның ұзындығын алу үшін кірістірілген Len() функциясы қолданылады:
|
1 2 |
users = {"Tom","Bob","Alice"} print(len(users)} # 3 |
Элементтерді қосу
Бір элементті қосу үшін add() әдісі шақырылады:
|
1 2 3 |
users = set() users.add("Sam") print(users) |
Элементтерді жою
Бір элементті жою үшін, жойылатын элемент берілетін remove() әдісі шақырылады. Бірақ, егер, мұндай элемент жиынтықта болмаса, онда қате пайда болатындығын есте ұстаған жөн. Сондықтан, элементті жоймас бұрын, in операторының көмегімен элементтің бар-жоғын тексеру керек:
|
1 2 3 4 5 6 |
users = {"Tom", "Bob", "Alice"}
user = "Tom" if user in users: users.remove(user) print(users) # {"Bob", "Alice"} |
Сондай-ақ, жою үшін Сіз discard() әдісін қолдана аласыз, ол элемент болмаған кезде, ерекше жағдай туғызбайды:
|
1 2 |
user = "Tim" users.discard(user) |
Барлық элементтерді жою үшін clear() әдісі шақырылады:
|
1 |
users.clear() |
Жиынды санау (Перебор множества)
Элементтерді санау үшін сіз for циклды қолдана аласыз:
|
1 2 3 4 |
users = {"Tom","Bob","Alice"}
for user in users: print(user) |
Санау кезінде әр элемент user айнымалысына орналастырылады.
Жиындарға қолданылатын амалдар
Copy() әдісін қолдана отырып, бір жиынның мазмұнын басқа айнымалыға көшіруге болады:
|
1 2 |
users = {"Tom","Bob","Alice"} users3 = users.copy() |
Union() әдісі екі жиынды біріктіреді және жаңа жиынды қайтарады:
|
1 2 3 4 5 |
users = {"Tom","Bob","Alice"} users2 = {"Sam","Kate", "Bob"}
users3 = users.union(users2) print(users3) # {"Bob", "Alice", "Sam", "Kate", "Tom"} |
Жиындардың қиылысы екі жиынтықта бір уақытта болатын элементтерді ғана алуға мүмкіндік береді. Intersection() әдісі жиындардың қиылысу операциясын жасайды және жаңа жиынды қайтарады:
|
1 2 3 4 5 |
users = {"Tom","Bob","Alice"} users2 = {"Sam","Kate", "Bob"}
users3 = users.intersection(users2) print(users3) # {"Bob"} |
Intersection әдісінің орнына логикалық көбейту амалын қолдана аламыз:
|
1 2 3 4 |
users = {"Tom","Bob","Alice"} users2 = {"Sam","Kate", "Bob"}
print(users & users2) # {"Bob"} |
Жоғарыдағы екі амалда бірдей әрекет орындайды.
Тағы бір амал - жиындардың айырмашылығы, бірінші жиында бар, бірақ екіншісінде жоқ элементтерді қайтарады. Жиындардың айырмашылығын алу үшін difference() әдісін немесе азайту әрекетін қолдануға болады:
|
1 2 3 4 5 6 |
users = {"Tom","Bob","Alice"} users2 = {"Sam","Kate", "Bob"}
users3 = users.difference(users2) print(users3) # {"Tom", "Alice"} print(users - users2) # {"Tom", "Alice"} |
Жиындар арасындағы қатынастар
Issubset() әдісі ағымдағы жиынның, басқа жиынның ішкі жиынтығы (яғни бөлігі) екенін анықтауға мүмкіндік береді:
|
1 2 3 4 5 |
users = {"Tom", "Bob", "Alice"} superusers = {"Sam", "Tom", "Bob", "Alice", "Greg"}
print(users.issubset(superusers)) # True print(superusers.issubset(users)) # False |
Issuperset() әдісі, керісінше, егер басқа жиын, ағымдағы жиынның ішкі жиынтығы болса, ақиқат мәнін қайтарады, бір сөзбен айтқанда, алдыңғы амалға қарама-қарсы әрекет орындайды:
|
1 2 3 4 5 |
users = {"Tom", "Bob", "Alice"} superusers = {"Sam", "Tom", "Bob", "Alice", "Greg"}
print(users.issuperset(superusers)) # False print(superusers.issuperset(users)) # True |
frozen set
Frozen set типі - өзгертуге болмайтын жиындардың түрі болып табылады. Оны жасау үшін frozenset функциясы қолданылады:
|
1 |
users = frozenset({"Tom", "Bob", "Alice"}) |
Frozenset функциясына элементтер жиынтығы беріле алады - тізім, түйін немесе басқа жиын.
Сондықтан, біз мұндай жиынға, жаңа элементтерді қоса да, жоя да алмаймыз. Шын мәнінде, frozen set үшін амалдар саны шектеулі:
-
len(s): жиынның ұзындығын қайтарады
-
x in s: Егер x элементі s жиынында болса, True қайтарады
-
x not in s: Егер x элементі s жиынында болмаса, True қайтарады
-
s. issubset(t): Егер t құрамында s жиынтығы болса, True қайтарады
-
s. issuperset(t): Егер t жиыны s жиынында болса, True қайтарады
-
s.union(t): s және t жиындарын біріктіруін қайтарады
-
s.intersection(t): s және t жиындарының қиылысын қайтарады
-
s.difference(t): s және t жиындарының айырмасын қайтарады
-
s.copy(): s жиынының көшірмесін қайтарады
5 бөлім. Жолдар
Жолдармен жұмыс
Жол Unicode кодын қолданатын таңбалар тізбегінен тұратын таңбалар тізімі болып табылады. Біз квадрат жақшадағы индекс бойынша жолдың жеке таңбаларына қатынай аламыз:
|
1 2 3 4 5 6 7 8 |
string = "hello world" c0 = string[0] # h print(c0) c6 = string[6] # w print(c6)
c11 = string[11] # IndexError қателігі: string index out of range print(c11) |
Индекстеу нөлден басталады, сондықтан жолдың бірінші таңбасында 0 индексі болады. Егер Біз жолда жоқ индекске жүгінуге тырыссақ, онда IndexError ерекшелігі пайда болады. Мысалы, жоғарыдағы жағдайда жолдың ұзындығы 11 таңбадан тұрады, сондықтан оның таңбаларында 0-ден 10-ға дейінгі индекстер болады.
Жолдың соңынан бастап таңбаларға қол жеткізу үшін теріс индекстерді қолдануға болады. Сонымен, -1 индексі соңғы таңбаны, ал -2 - соңғы таңба алдындағы таңбаны және т. б. білдіреді:
|
1 2 3 4 5 |
string = "hello world" c1 = string[-1] # d print(c1) c5 = string[-5] # w print(c5) |
Таңбалармен жұмыс жасау кезінде жолдың өзгермейтін мәлімет типі екенін ескеру керек, сондықтан, егер біз жолдың жеке таңбасын өзгертуге тырыссақ, онда келесі жағдайдағыдай қате пайда болады:
|
1 2 |
string = "hello world" string[1] = "R" |
Біз жолдың мәнін оған басқа мән беру арқылы толығымен қайта өзгерте аламыз.
Ішкі жолды алу
Қажет болса, біз жолдан жеке таңбаларды ғана емес, сонымен қатар ішкі жолды да(бірнеше таңбалар тізімі) ала аламыз. Ол үшін келесі синтаксис қолданылады:
-
string[:end]: таңбалар тізбегі 0-ші индекстен бастап end индексіне дейін алынады
-
string[start:end]: таңбалар тізбегі start индексінен бастап end индексіне дейін алынады
-
string[start:end:step]: start индексінен бастап step қадамы арқылы end индексіне дейінгі таңбалар тізбегі алынады
Біз ішкі жолды алудың барлық нұсқаларын қолданып көрейік:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
string = "hello world"
# 0-ден 5-ші символға дейін sub_string1 = string[:5] print(sub_string1) # hello
# 2-ші символдан бастап 5-ші символға дейін sub_string2 = string[2:5] print(sub_string2) # llo
# 2-ден 9-шы символға дейін 2 қадаммен sub_string3 = string[2:9:2] print(sub_string3) # lowr |
Ord және len функциялары
Жол таңбалары Unicode кодын қолданғандықтан, біз ord() функциясының көмегімен, таңбаның сандық мәнін ала аламыз:
|
1 |
print(ord("A")) # 65 |
Жолдың ұзындығын алу үшін len() функциясын қолдануға болады:
|
1 2 3 |
string = "hello world" length = len(string) print(length) # 11 |
Жолда іздеу
Term in string өрнегін қолдана отырып, string жолынан term ішкі жолын табуға болады. Егер ішкі жол табылса, онда өрнек ақиқат мәнін қайтарады, әйтпесе жалған мән қайтарылады:
|
1 2 3 4 5 6 |
string = "hello world" exist = "hello" in string print(exist) # True
exist = "sword" in string print(exist) # False |
Жолды санау
For циклінің көмегімен сіз жолдың барлық таңбаларына қатынай аласыз:
|
1 2 3 |
string = "hello world" for char in string: print(char) |
Негізгі жол әдістері
Қосымшаларда қолдануға болатын жолдардың негізгі әдістерін қарастырайық:
-
isalpha (): егер жол тек алфавиттік таңбалардан тұрса, True қайтарады
-
islower(): егер жол тек кіші әріптегі таңбалардан тұрса, True қайтарады
-
isupper(): егер барлық жол таңбалары жоғарғы регистрде болса, True қайтарады
-
isdigit(): егер жолдың барлық таңбалары сандар болса, True қайтарады
-
isnumeric(): егер жол сан болса, True қайтарады
-
startswith(str): егер жол strr ішкі жолынан басталса, True қайтарады
-
endswith(str): егер жол strr ішкі жолында аяқталса, True қайтарады
-
lower(): жолды төменгі регистрге аударады
-
upper(): жолды жоғарғы регистрге аударады
-
title(): жолдағы барлық сөздердің бастапқы таңбалары жоғарғы регистрге аударылады
-
capitalize(): жолдың бірінші сөзінің бірінші әрпін жоғарғы регистрге аударады
-
lstrip(): жолдан бастапқы бос орындарды жояды
-
rstrip(): жолдан соңғы бос орындарды жояды
-
strip(): жолдан бастапқы және соңғы бос орындарды жояды
-
ljust(width): егер жолдың ұзындығы width параметрінен аз болса, онда жолдың оң жағындағы бос орындар width мәнін қосу үшін қосылады, ал жолдың өзі сол жаққа тураланады
-
rjust(width): егер жолдың ұзындығы width параметрінен аз болса, онда жолдың сол жағына бос орындар қосылады, ал жолдың өзі оң жаққа тураланады
-
center(width): егер жолдың ұзындығы width параметрінен аз болса, онда жолдың сол және оң жағында бос орындар width мәнін толықтыру үшін біркелкі қосылады, ал жолдың өзі ортаға тураланады
-
find(str[, start[, end]): жолдағы ішкі жол индексін қайтарады. Егер ішкі жол табылмаса, -1 саны қайтарылады
-
replace(old, new [, num]): жолдағы бір ішкі жолды екіншісіне ауыстырады
-
split([delimeter [, num]]): бөлгішке байланысты жолды ішкі жолдарға бөледі
-
join(strs): жолдарды бір жолға біріктіріп, олардың арасына белгілі бір бөлгішті орналастыруға болады
Мысалы, егер біз пернетақтадан санды енгізуді күтетін болсақ, онда енгізілген жолды санға түрлендірмес бұрын, isnumeric() әдісін қолдана отырып, нақты сан енгізілгенін тексеруге болады, егер солай болса, онда түрлендіру әрекетін орындауға болады деген сөз:
|
1 2 3 4 |
string = input("Сан енгізіңіз: ") if string.isnumeric(): number = int(string) print(number) |
Жол, белгілі бір ішкі жолдан басталуын тексереді:
|
1 2 3 4 |
file_name = "hello.py"
starts_with_hello = file_name.startswith("hello") # True ends_with_exe = file_name.endswith("exe") # False |
Жолдың басында және соңында бос орындарды жою:
|
1 2 3 |
string = " hello world! " string = string.strip() print(string) # hello world! |
Жолды бос орындармен толықтыру және туралау:
|
1 2 |
print("iPhone 7:", "52000".rjust(10)) print("Huawei P10:", "36000".rjust(10)) |
Консольге шығару:
iPhone 7: 52000
Huawei P10: 36000
Жолда іздеу
Python-да жолдағы ішкі жолды іздеу үшін find() әдісі қолданылады, ол жолға бірінші ішкі жолдың кіру индексін қайтарады және оның үш формасы бар:
-
find(str): str ішкі жолын іздеу жолдың басынан аяғына дейін жүзеге асырылады
-
find(str, start): start параметрі іздеу жүргізілетін бастапқы индексті анықтайды
-
find(str, start, end): end параметрі іздеу жүретін соңғы индексті анықтайды
Егер ішкі жол табылмаса, әдіс -1 қайтарады:
|
1 2 3 4 5 6 7 8 9 10 11 |
welcome = "Hello world! Goodbye world!" index = welcome.find("wor") print(index) # 6
# 10 индекстен бастап іздеу index = welcome.find("wor",10) print(index) # 21
# 10 мен 15 индекс аралығында іздеу index = welcome.find("wor",10,15) print(index) # -1 |
Жолда ауыстыру
Бір ішкі жолды екіншісіне ауыстыру үшін replace() әдісі қолданылады:
-
replace(old, new): old ішкі жолын жаңасына ауыстырады
-
replace(old, new, num): num параметрі old ішкі жолының қанша кездесуін жаңасына ауыстыру керектігін көрсетеді
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
phone = "+1-234-567-89-10"
# сызықшаларды бос орынға ауыстыру edited_phone = phone.replace("-", " ") print(edited_phone) # +1 234 567 89 10
# сызықшаларды жою edited_phone = phone.replace("-", "") print(edited_phone) # +12345678910
# бірінші сызықшаны ғана ауыстыру edited_phone = phone.replace("-", "", 1) print(edited_phone) # +1234-567-89-10 |
Ішкі жолдарға бөлу
Split () әдісі бөлгішке байланысты жолды ішкі жолдар тізіміне бөледі. Бөлгіш кез-келген таңба немесе таңбалар тізбегі бола алады. Бұл әдіс келесі формалары бар:
-
split(): бөлгіш ретінде бос орын қолданылады;
-
split(delimeter): бөлгіш ретінде delimeter қолданылады
-
split(delimeter, num): num параметрі, неше рет бөлу керектігін көрсетеді көрсетеді. Жолдың қалған бөлігі тізімге, ішкі жолдарға бөлінбестен, қосылады
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
text = "Это был огромный, в два обхвата дуб, с обломанными ветвями и с обломанной корой" # бос орын бойынша бөлу splitted_text = text.split() print(splitted_text) print(splitted_text[6]) # дуб,
# үтір бойынша бөлу splitted_text = text.split(",") print(splitted_text) print(splitted_text[1]) # в два обхвата дуб
# бірінші 5 бос орындар бойынша бөлу, қалған бөлігі консольға шығарылған splitted_text = text.split(" ", 5) print(splitted_text) print(splitted_text[5]) # обхвата дуб, с обломанными ветвями и с обломанной корой |
Жолдарды біріктіру
Жолдармен қарапайым операцияларды қарастырған кезде, қосу амалын қолдана отырып, жолдарды қалай біріктіру керектігі көрсетілді. Жолдарды қосудың тағы бір мүмкіндігі - join() әдісі: ол жолдар тізімін біріктіреді. Сонымен қатар, осы әдіс шақырылған ағымдағы жол бөлгіш ретінде қолданылатынын ескерген жөн, мысалы:
|
1 2 3 4 5 6 7 8 9 |
words = ["Let", "me", "speak", "from", "my", "heart", "in", "English"]
# бөлгіш – бос орын sentence = " ".join(words) print(sentence) # Let me speak from my heart in English
# бөлгіш – тәк сызықша sentence = " | ".join(words) print(sentence) # Let | me | speak | from | my | heart | in | English |
Join әдісіне тізімнің орнына қарапайым жолды беруге болады, бұл жағдайда бөлгіш осы жолдың таңбалары арасында енгізіледі:
|
1 2 3 |
word = "hello" joined_word = "|".join(word) print(joined_word) # h|e|l|l|o |
Жолдарды форматтау
Жолдарда анықталған format() әдісі, белгілі бір мәндерді арнайы белгілердің(placeholder) орнына қою арқылы, жолды форматтауға, яғни қажетімізге байланысты өзгертуге мүмкіндік береді.
Жолға мәндерді кірістіру үшін фигуралық жақшалармен ({}) жиектелген, арнайы параметрлер қолданылады.
Аталған параметрлер
Форматталатын жолда параметрлерді анықтап, format() әдісінде осы параметрлер үшін мәндерді бере аламыз:
|
1 2 3 4 5 |
text = "Hello, {first_name}.".format(first_name="Tom") print(text) # Hello, Tom.
info = "Name: {name}\t Age: {age}".format(name="Bob", age=23) print(info) # Name: Bob Age: 23 |
Сонымен қатар, әдіске сәйкес, аргументтер жолдағы параметрлермен бірдей атпен анықталады. Сонымен, егер параметр бірінші жағдайдағыдай first_name деп аталса, онда мән берілген аргумент те first_name деп аталады.
Позиция бойынша параметрлер
Сондай-ақ, біз format әдісіне аргументтер жиынтығын бере аламыз, ал форматталатын жолда бұл аргументтерді, олардың нөмірін көрсете отырып енгізе аламыз (нөмірлеу нөлден басталады):
|
1 2 |
info = "Name: {0}\t Age: {1}".format("Bob", 23) print(info) # Name: Bob Age: 23 |
Бұл жағдайда аргументтерді жолға бірнеше рет енгізуге болады:
|
1 |
text = "Hello, {0} {0} {0}.".format("Tom") |
Ауыстырулар
Пішімделген мәндерді жолға берудің тағы бір тәсілі - белгілі бір мәндер енгізілген алмастырғыштарды немесе арнайы шаблондарды placeholder () пайдалану. Форматтау үшін келесі шаблондарды пайдалануға болады:
-
s: жолдарды енгізу үшін
-
d: бүтін сандарды енгізу үшін
-
f: бөлшек сандарды енгізу үшін. Бұл түр үшін бөлшек бөлігіндегі белгілердің санын нүкте арқылы да анықтауға болады.
-
%: мәнді 100-ге көбейтеді және пайыз белгісін қосады
-
e: санды экспоненциалды жазбадағы көрсетеді
Плейсхолдердің жалпы синтаксисі келесідей:
|
1 |
{:плейсхолдер} |
Плейсхолдерге байланысты қосымша параметрлерді қосуға болады. Мысалы, float сандарын форматтау үшін келесі параметрлерді пайдалануға болады
|
1 |
{:[таңбалар саны][үтір][.бөлшек бөліктегі таңбалар саны] плейсхолдер} |
Format әдісін шақырған кезде, оған дәлелдер ретінде плейсхолдердің орнына енгізілген мәндер беріледі:
|
1 2 3 4 |
welcome = "Hello {:s}" name = "Tom" formatted_welcome = welcome.format(name) print(formatted_welcome) # Hello Tom |
Нәтиже ретінде format() әдісі жаңа форматталған жолды қайтарады.
Бүтін сандарды пішімдеу:
|
1 2 3 4 |
source = "{:d} таңба" number = 5 target = source.format(number) print(target) # 5 таңба |
Егер пішімделетін сан 999-дан үлкен болса, онда біз ойнатқыштың анықтамасында үтірді разрядты бөлгіш ретінде қолданғымыз келетінін көрсете аламыз:
|
1 2 |
source = "{:,d} таңбалар" print(source.format(5000)) # 5,000 таңбалар |
Бөлшек сандар үшін, яғни float типін білдіретін сандар үшін, плейсхолдер кодының алдында нүктеден кейін, бөлшек бөлігінде, қанша таңба шығарғымыз келетінін көрсетуге болады:
|
1 2 3 4 5 |
number = 23.8589578 print("{:.2f}".format(number)) # 23.86 print("{:.3f}".format(number)) # 23.859 print("{:.4f}".format(number)) # 23.8590 print("{:,.2f}".format(10001.23554)) # 10,001.24 |
Тағы бір параметр таңбалардағы форматталатын мәннің ең аз енін орнатуға мүмкіндік береді:
|
1 2 |
print("{:10.2f}".format(23.8589578)) # 23.86 print("{:8d}".format(25)) # 25 |
Пайыздарды шығару үшін "%" кодын қолданған дұрыс:
|
1 2 3 4 |
number = .12345 print("{:%}".format(number)) # 12.345000% print("{:.0%}".format(number)) # 12% print("{:.1%}".format(number)) # 12.3% |
Экспоненциалды жазбада санды шығару үшін "e" плейсхолдері қолданылады":
|
1 2 3 4 |
number = 12345.6789 print("{:e}".format(number)) # 1.234568e+04 print("{:.0e}".format(number)) # 1e+04 print("{:.1e}".format(number)) # 1.2e+04 |
Format әдісісіз пішімдеу
Негізінде, мәндерді форматтау үшін біз, format әдісін қолданбай, келесі синтаксисті қолдана отырып, жасай аламыз:
|
1 |
жол%(параметр1, параметр2,..параметрN) |
Яғни, басында жоғарыда қарастырғандай, сол пейсхолдерлері бар жол бар (%плейсхолдерін санамағанда), жолдан кейін % пайыздық белгі қойылады, содан кейін жолға енгізілген мәндер тізімі беріледі. Шын мәнінде, пайыздық белгі жаңа жол пайда болатын операцияны білдіреді:
|
1 2 |
info = "Есімі: %s \t Жасы: %d" % ("Tom", 35) print(info) # Есімі: Tom Жасы: 35 |
Плейсхолдердің жанында пайыздық белгі көрсетіледі және FORMAT функциясынан айырмашылығы, фигуралық жақшалар қажет емес.
Сонымен қатар, мұнда сандарды форматтау әдістері де қолданылады:
|
1 2 |
number = 23.8589578 print("%0.2f - %e" % (number, number)) # 23.86 - 2.385896e+01 |
Сөздерді санау бағдарламасы
Сөздерді санау бағдарламасы мысалымен жолдармен жұмыс әстейтін амалдар мен әдістерді қарастырайық.
Бағдарламаның барлық коды келесідей болады:
Мұнда get_words() функциясында мәтінді сөздерге бөлу, яғни сегментациясы жасалады. Сонымен қатар, бұл функция барлық пунктуациялық белгілер жойады, ал келесі жолға ауыстыру таңбаларын бос орындарға ауыстырылады. Содан кейін мәтін сөздерге бөлінеді. Бөлгіш ретінде, келісім бойынша, бос орын қолданылады.
Әрі қарай, get_words_dict() функциясында біз сөздерден сөздік аламыз, мұнда кілт - ерекше сөз, ал мағынасы - осы сөздің мәтіндегі пайда болу саны.
Негізгі функция файлдың жолы мен атын енгізуді ұйымдастырып, бжоғарыдағы функцияларды шақырып, барлық статистиканы шығарады.
Бағдарламаның консольге шығарған нәтижесі, мәтін ретінде Абайдың 1-ші қара сөзі мәтіні алынды:
Файлдың жолы мен атын енгізіңіз: c:\1\Text.txt
Сөздер саны: 266
Қайталанбайтын сөздер: 204
Барлық сөздер:
- 2
адам 1
аз 1
азығын 1
айтыстық 1
ал 1
албыртқан 1
алмадым 1
.....
ЕСКЕРТПЕ ҮШІН
жүктеу мүмкіндігіне ие боласыз
Бұл материал сайт қолданушысы жариялаған. Материалдың ішінде жазылған барлық ақпаратқа жауапкершілікті жариялаған қолданушы жауап береді. Ұстаз тілегі тек ақпаратты таратуға қолдау көрсетеді. Егер материал сіздің авторлық құқығыңызды бұзған болса немесе басқа да себептермен сайттан өшіру керек деп ойласаңыз осында жазыңыз
"Python арқылы жасанды интеллект алгоритмлерін әзірлеу және қолдану"
"Python арқылы жасанды интеллект алгоритмлерін әзірлеу және қолдану"
Жамбыл облысы әкімдігі білім басқармасы Тараз қаласы білім бөлімінің Ы.Сүлйменов атындағы №37 орта мектебі КММ
Информатика пәнінің мұғалімі
Куанышбекова Куралай Сайлауовна
10-11 сыныптарға арналған
Тақырыбы "Python арқылы жасанды интеллект алгоритмлерін әзірлеу және қолдану"
АВТОРЛЫҚ БАҒДАРЛАМА

Алматы 2024 жыл

ӘОЖ
379
КБЖ 74.262.27
Ж 19
Жамбыл облысы әкімдігі білім басқармасы Тараз қаласы білім бөлімінің Ы.Сүлйменов атындағы №37 орта мектебі КММ
Информатика пәнінің мұғалімі
Куанышбекова Куралай Сайлауовна
– Алматы: «Білім әлемі» редакциясы, 2024. – 71 б.
Пікір берушілер:
Қазақ Ұлттық қыздар педагогикалық университетінің оқытушысы, п.ғ.к., қауымдастырылған профессор м.а.
Карсыбаева Раиса Канабековна
Қазақ мемлекеттік қыздар педагогикалық университетінің «Педагогика және психология» кафедрасының кандитаты
Текесбаева Анар
ISBN 978 - 601 - 341 - 501 - 14
Ұсынылып отырған оқулық қазіргі заман талабына сай білім беру саласындағы жаңашыл оқытушыға қойылатын талап та жаңашыл болатыны сөзсіз. Оқытушы алдындағы басты міндет – оқытудың әдіс-тәсілдерін үнемі жетілдіріп және жаңа педагогикалық технологияларды меңгере отырып, еліміздің жарқын болашағын жасайтын білімді де білікті, бәсекеге қабілетті тұлға қалыптастыру.
Жаңа технологияларды меңгеру мұғалімнің кәсіптік, рухани, азаматтық және басқа да көптеген адами келбетінің қалыптасуына игі әсерін тигізеді, өзін – өзі дамытып, оқу үрдісін тиімді ұйымдастыруға көмектеседі. Бүгінгі күні инновациялық әдістер мен ақпараттық технологиялар қолдану арқылы оқушының ойлау қабілетін арттырып, ізденушілігін дамытып, қызығушылығын тудыру, белсенділігін арттыру ең негізгі мақсат болып айқындалады.
© Куанышбекова Куралай Сайлауовна
© ИП «Білім әлемі»
Visual Studio бағдарламасындағы Python 14
Айнымалылар мен мәлімет типтері 20
Сандармен орындалатын амалдар 22
Түсінік хат
«Заманауи білім беру мен тәрбиелеудегі инновациялық техналогиялардың маңызды бағдарламасы Python» - әр түрлі типтегі қосымшаларды(бағдарламаларды) құруға арналған танымал жоғары деңгейлі бағдарламалау тілі. Бұл веб-қосымшалар, ойындар, жұмыс үстелі бағдарламалары және мәліметтер базасымен жұмыс істеуге болады. Python машиналық оқыту мен жасанды интеллектті зерттеу саласында кең таралды.
Python туралы алғаш рет 1991 жылы голландтық әзірлеуші Гидо Ван Россум жариялады. Содан бері бұл тіл дамудың ұзақ жолынан өтті. 2.0 нұсқасы 2000 жылы, 3.0 нұсқасы 2008 жылы шығарылды. Нұсқалар арасындағы осындай үлкен алшақтықтарға қарамастан, ішкі нұсқалары үнемі шығарылып отырады. Сонымен, соңғы нұсқасы 3.9.7 болып табылады. Тілдің барлық шығарылымдары, нұсқалары мен өзгертулері туралы, сондай-ақ аудармашылардың өздері және жұмысқа қажетті утилиталар туралы және басқа пайдалы ақпарат туралы толығырақ ақпаратты https://www.python.org/ ресми сайтынан табуға болады.
«Заманауи білім беру мен тәрбиелеудегі инновациялық техналогиялардың маңызды бағдарламасы Python» бағдарламалау тілінің негізгі ерекшеліктері:
-
Сценарий тілі. Бағдарлама коды сценарий түрінде анықталады.
-
Бағдарламалау парадигмаларының алуан түрлілігін, соның ішінде негізгілері - объектіге бағытталған және функционалды парадигмаларды қолдану.
-
Сценарийлермен жұмыс істеу үшін сценарийді аударатын және орындайтын аудармашы керек. Оны интерпретатор деп атайды.
«Заманауи білім беру мен тәрбиелеудегі инновациялық техналогиялардың маңызды бағдарламасы Python» бағдарламасының орындалуы келесі әрекеттерден тұрады. Біріншіден, біз мәтіндік редакторға берілген бағдарламалау тілінде өрнектер жиынтығымен сценарий жазамыз. Біз бұл сценарийді орындау үшін аудармашыға жібереміз. Аудармашы кодты аралық байт-кодқа айналдырады, содан кейін виртуалды машина алынған байт-кодты операциялық жүйе орындайтын нұсқаулар жиынтығына айналдырады.
Бұл жерде ресми кодты интерпретатордың байт кодына аударуы және виртуалды машинаның виртуалды машинаның машиналық нұсқаулар жиынтығына аударуы формальды түрде болғанымен, екі түрлі процесті болғанымен, іс жүзінде бұл екі процессті интерпретатор бірге атқарады.

Сурет 1.1 – Python интерпретаторының жұмыс принципі
-
Портативтілік және платформаның тәуелсіздігі. Бізде қандай операциялық жүйе орнатылғаны маңызды емес - Windows, Mac OS, Linux, бізге тек осы ОЖ-де аудармашының қатысуымен жұмыс жасайтын сценарий жазу керек.
-
Жадты автоматты басқару мүмкіндігі
-
Динамикалық түрлілігі
«Заманауи білім беру мен тәрбиелеудегі инновациялық техналогиялардың маңызды бағдарламасы Python» - бұл өте қарапайым бағдарламалау тілі, ол лаконикалық және сонымен бірге өте қарапайым және түсінікті синтаксиске ие. Тиісінше, оны үйрену оңай, ал іс жүзінде бұл оқыту үшін ең танымал бағдарламалау тілдерінің бірі болып табылады. Атап айтқанда, 2014 жылы ол Америка Құрама Штаттарында оқытуға арналған ең танымал бағдарламалау тілі ретінде танылды.
«Заманауи білім беру мен тәрбиелеудегі инновациялық техналогиялардың маңызды бағдарламасы Python» тек білім беру саласында ғана емес, сонымен қатар коммерциялық бағдарламаларды құруға ыңғайлы. Сондықтан көптеген тілдер үшін біз қолдана алатын кітапханалар жазылған.
Сонымен қатар, бұл бағдарламалау тілінің өте үлкен қауымдастығы бар, Интернетте сіз осы тіл туралы көптеген пайдалы материалдар, мысалдар таба аласыз және мамандардан білікті көмек ала аласыз.
Python орнату
«Заманауи білім беру мен тәрбиелеудегі инновациялық техналогиялардың маңызды бағдарламасы Python» бағдарламаларын құру үшін бізге аудармашы(интерпретатор) керек. Оны орнату үшін https://www.python.org/downloads/ парағына өтіп , тілдің соңғы нұсқасын жүктеуге сілтеме табыңыз (қазіргі уақытта ол 3.9.5):

Сурет 1.2 – Python-ды көшіруге арналған батырма
Батырманы басу арқылы ағымдағы ОЖ үшін тиісті Python орнатқышы жүктеледі.
Windows ОЖ-де орнатушы іске қосылғанда, орнату шебері терезесін ашады:

Сурет 1.3 – Python-ды орнату шеберінің терезесі
Мұнда біз интерпретатор орнатылатын жолды енгіземіз. Оны өзгертусіз қалдырыңыз, яғни C:\Users\[username]\AppData\Local\Programs\Python\Python36\.
Сонымен қатар, ең төменгі жағында интерпретаторға жолды қоршаған ортаның айнымалыларына қосу үшін «PATH-ге Python 3.9 қосу» белгісін таңдаңыз.
Windows жүйесіндегі Пуск мәзірінде орнатқаннан кейін біз python утилиталарын қосуға арналған белгішелерді таба аламыз:

Сурет 1.4 – Python-ды негізгі менюден қосу әдісі
Мұнда Python 3.9 (64-биттік) утилитасы біз сценарийді басқара алатын интерпретаторды ұсынады. Файлдық жүйеде интерпретатордың файлын өзі орнатылған жол бойынша табуға болады. Windows жүйесінде әдепкі жол C:\Users\[username]\AppData\Local\Programs\Python\Python37 болып табылады, ал интерпретатор дегеніміз python.exe файлы болып табылады. Linux ОЖ-де орнату /usr/local/bin/python3.9 жолы бойынша орындалады.
Бірінші Python бағдарламасы
Алдыңғы тақырыпта көрсетілгендей интерпретаторды орнатқаннан кейін бізге Python-да бағдарлама құруды бастауға болады. Сонымен, алғашқы қарапайым бағдарламаны құрайық.
Жоғарыда айтылғандай, егер орнату кезінде мекен-жайы өзгертілмесе, келісім бойынша инетрпретатор бағдарламасы Linux-те usr/local/bin/python39 жолымен, ал Windows-та C:\Users\[пайдаланушы аты-жөні]\AppData\Local\Programs\Python\Python39\ және python.exe деп аталатын файлда сақталады.
Интерпретатор жүктеп, оған келесі жолды енгізейік:
|
1 |
print("hello world") |
Консоль «hello world» жолын басып шығарады:

Сурет 2.1 – Python-да алғашқы бағдарлама жұмысы
Бұл бағдарлама бір-ақ командадан тұрады, онда белгілі бір мәтінді консольға басып шығаратын print () функциясы қолданылған.
Бағдарламалық файл құру
Негізінде, бағдарламалар сыртқы сценарий(скрипт) файлдарында сақталады, содан кейін орындалу үшін интерпретаторға беріледі. Сонымен, бағдарлама файлын құрайық. Ол үшін С диск жетегінде немесе файлдық жүйенің басқа жерінде сценарийлер үшін python қалтасын құрамыз. Бұл қалтада hello.py деп аталатын жаңа мәтіндік файл жасаңыз. Әдетте, Python коды бар файлдарда py кеңейтілімі болады.

Сурет 2.2 – Python файлы орналасқан қалта
Осы файлды кез-келген мәтіндік редактордан ашып, оған келесі кодты қосайық:
|
1 2 |
name = input("Есіміңізді енгізіңіз: ") print("Сәлем,", name) |

Сурет 2.3 – Скрип файлында жазылған бағдарлама
Скрипт екі жолдан тұрады. Бірінші жолда input() функциясы пайдаланушының өз атын енгізгенін күту үшін қолданылады. Содан кейін енгізілген атау name айнымалысына сақталалды.
Екінші жолда сәлемдесуді енгізілген есіммен бірге шығару үшін print() функциясы қолданылады.
Енді командалық жолды немесе терминалды іске қосып, hello.py бастапқы код файлы орналасқан қалтаға өту үшін cd пәрменін қолданайық (мысалы, менің жағдайда бұл C:\python қалтасы). Келесіде, алдымен интерпретатордың толық жолын, сосын сценарий файлының толық жолын енгізіңіз:
Мысалы, менің жағдайда консольді енгізу қажет болады:
C:\Users\iron\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Python 3.9\python.exe hello.py
Бірақ егер орнату кезінде «Python 3.9-ді PATH-ке қосу» параметрі көрсетілген болса, яғни Python интерпретаторына жол қоршаған ортаның айнымалыларына қосылса, онда аудармашының толық жолының орнына жай ғана python жазуға болады:
python hello.py
Бағдарламаны орындалу барысы төменде көрсетілген:

Сурет 2.4 – hello.py скриптінің жұмыс нәтижесі
PyCharm бағдарлау ортасы
Алдыңғы тақырыпта Python-да қарапайым сценарийді қалай құруға болатындығы сипатталды. Сценарийді құру үшін мәтіндік редактор қолданылады. Оны қарапайым блокнот қосымшасы арқылы құруға болады. Бірақ python скриптерді құру үшін, көптеген функциялары бар арнайы бағдарламалау орталарын(IDE) қолданған жөн.
IDE бізге кодты теру үшін мәтіндік редактор ұсынады, бірақ стандартты мәтіндік редакторлардан айырмашылығы, IDE синтаксисті түстер бойынша ажыратады, автоматты түрде аяқтауды немесе бағдарламалау барысында көмек көрсету, құрылған сценарийді дереу орындау мүмкіндігі және тағы басқа пайдалы функцияларды ұсынады.
Python үшін әр түрлі құрастыру орталары бар, бірақ ең танымалдыларының бірі - JetBrains-тің PyCharm ортасы болып табылады. Бұл орта қарқынды дамып келеді, үнемі жаңартылып отырады және ең кең таралған операциялық жүйелер - Windows, MacOS, Linux үшін арналған.
Алайда оның маңызды бір шектеулігі бар. Атап айтқанда, бұл IDE-нің екі негізгі нұсқасы бар: ақылы кәсіби(professional) және ақысыз қоғамдастық(community). Көптеген негізгі мүмкіндіктер ақысыз Қоғамдастық шығарылымында қол жетімді. Сонымен қатар, веб-әзірлеу сияқты бірқатар мүмкіндіктер тек ақылы нұсқасында ғана қарастырылған.
Біздің жағдайда, біз Қоғамдастықтың тегін нұсқасын қолданамыз. Оны https://www.jetbrains.com/pycharm/download/#section=windows сілтемесіне өтіп, PyCharm Community орнату файлын жүктеп алыңыз. Жүктелгеннен кейін біз оны орнатамыз.
Орнату аяқталғаннан кейін бағдарламаны іске қосыңыз. Оны бірінші рет бастаған кезде бастапқы терезе ашылады:

Сурет 3.1 – PyCharm бағдарламасының алғашқы терезесі
Жаңа жоба жасау үшін New Project пунктін таңдаймыз.
Әрі қарай, бізге жобаны конфигурациялауға арналған терезе ашылады. Орналасу(Location) алаңында сіз жоба сақталатын жолды көрсетуіңіз керек. Менің жағдайда жоба HelloApp қалтасына орналастырылады. Қапшықтың өзі жоба атауы болады.

Сурет 3.2 – Жобаны конфигурациялау терезесі
Айта кету керек, PyCharm жоба параметрлерін шектеуге мүмкіндік береді. Сонымен, келісім бойынша, белгілі бір жоба үшін виртуалды нұсқасын орнатуға мүмкіндік беретін New Environment Using алаңы таңдалады. Содан кейін орнатылған кез-келген қосымша пакеттер тек ағымдағы жобаға қатысты болады. Бұл ыңғайлы, егер біз бірнеше жобалар жасасақ, бірақ олардың әрқайсысы аудармашының белгілі бір нұсқасымен жұмыс істейді. Сонымен қатар, біз Existing Interpreter өрісін таңдап, барлық жобалар үшін глобальды интерпретатор файлына жол қоя аламыз.
Шындығында PyCharm ең қарапайым қосымшасы үшін интерпретатордың қалай орнатылатындығы маңызды емес. Алайда, бұл жағдайда біз келісім бойынша таңдалған «New Environment Using» құсбелгісінен шығамыз және оның астында «Base Interpreter» өрісінде аудармашы файлына жолды көрсетіңіз, оны орнату бірінші тақырыпта қарастырылды.
Create a main.py welcome script нұсқасын таңдағанда бірден жобаға main.py файлын қосуға мүмкіндік береді.
Барлық жолдарды орнатқаннан кейін, жоба жасау үшін Create батырмасын басыңыз.
Осыдан кейін бос жоба жасалады:

Сурет 3.2 – Жобаны конфигурациялау терезесі
Main.py файлы қоршаған ортада белгілі шаблонмен бірге ашылады.
Енді ең қарапайым бағдарламаны құрайық. Ол үшін main.py файлының кодын келесідей өзгертейік:
|
1 2 |
name = input("Есіміңізді енгізіңіз: ") print("Сәлем,", name) |
Сценарийді іске қосу үшін бағдарламаның құралдар тақтасындағы жасыл батырманы басыңыз:

Сурет 3.3 – Жобаны жүргізу
Сондай-ақ, бастау үшін, Run мәзіріне өтіп, Run 'main' батырмасын басуға болады.
Осыдан кейін IDE-нің төменгі жағында шығыс терезесі пайда болады, онда сізге есім енгізу керек, содан кейін бағдарлама нәтижесі терезенің төменгі жағындағыдай көрсетіледі:

Сурет 3.4 – Бағдарламаның орындалу нәтижесі
Visual Studio бағдарламасындағы Python
Python-мен жұмыс істеуге мүмкіндік беретін IDE-нің бірі - Visual Studio. Бұл IDE-нің PyCharm-пен салыстырғандағы артықшылығы, ең алдымен, оның VS 2019 Community тегін шығарылымында бірқатар функциялар мен мүмкіндіктер ақысыз қол жетімді болуы, сол функциялар PyCharm-да тек ақылы Professional Edition нұсқасында қарастырылған. Мысалы, бұл веб-әзірлеу, оның ішінде әр түрлі фреймворктерді қолдану. Сонымен бірге, Visual Studo бағдарламасында Python әзірлеуге арналған құралдар әзірге тек Windows ОЖ нұсқасында қол жетімді.
Сонымен, Visual Studio 2019 Community орнату файлын https://visualstudio.microsoft.com/downloads/ сайтынан жүктеп алайық. Орнату файлын іске қосқаннан кейін орнатылатын Python опцияларының бірін таңдаңыз:

Сурет 4.1 – VS 2019 Community орнату терезесі
Visual Studio бағдарламасын орнатқаннан кейін оны іске қосайық. Мәзірден File (Файл) -> New (Құру) -> Project (Жоба), сонда жаңа жоба жасауға арналған терезе ашылады. Осы терезеде сол жақ мәзірде Python тіліне өтуге болады:

Сурет 4.2 – VS 2019 Community ортасында python тілінде бағдарламалау
Терезенің орталық бөлігінен Python-ді таңдап, біз осы бағдарламалау тілінде қолдана алатын жоба типтерінің бірнеше түрлерін көре аламыз. Бұл веб-әзірлеу, машиналық оқыту және бұлтпен жұмыс істеуге арналған жобалар, жұмыс үстелі қосымшаларына арналған жобалар және т.б. Бұл жағдайда біз жоба типі ретінде Python Application, яғни қарапайым консольдық қосымшалардың түрін таңдап, жаңа жобаны HelloApp деп атаймыз. OK батырмасын басыңыз, сонда Visual Studio жаңа жоба жасайды:

Сурет 4.3 – VS 2019 Community ортасында құрылған жоба құрылымы
Solution Explorer терезесінің оң жағында жоба құрылымын көруге болады. Келісім бойынша біз мына элементтерді көре аламыз:
-
Python Environments: Мұнда сіз барлық қолданылған орталарды көре аласыз, атап айтқанда, осы жерде қолданылатын компилятор туралы ақпаратты таба аласыз;
-
References: бұл түйінде ағымдағы жоба қолданатын барлық сыртқы тәуелділіктер бар;
-
Search Paths: бұл түйін Python модульдерінің іздеу жолдарын анықтауға мүмкіндік береді;
-
HelloApp.py: Python бастапқы файлы
Келісім бойынша, HelloApp.py файлы Visual Studio-да ашық, бірақ ол әзірге бос. Оған келесі жолды қосайық:
|
1 |
print("Hello Python from Visual Studio!") |
Содан кейін құралдар тақтасында іске қосу үшін жасыл батырманы шертіңіз:

Сурет 4.4 – VS 2019 Community жұмыс ортасы
Іске қосу батырмасын басқаннан кейін, бағдарлама нәтижесін көрсететін жол шығады:

Сурет 4.5 – Бағдарламаны іске қосқаннан соңғы нәтиже
Бағдарлама құруды бастау
Python бағдарламасы командалар жиынтығынан тұрады. Әрбір команда жаңа жолға жазылады. Мысалы:
|
1 2 |
print(2 + 3) print("Hello") |
Python-да шегіністер үлкен рөл атқарады. Дұрыс орнатылмаған шегініс іс жүзінде қате болып табылады. Мысалы, дегенмен код жоғарыдағы кодтан айырмашылығы болмасада, келесі жағдайда қате пайда болады:
|
1 2 |
print(2 + 3) print("Hello") |
Сондықтан да, жаңа команданы жолдын басына орналастыру қажет. Бұл питонның C# немесе Java сияқты басқа бағдарламалау тілдерінен маңызды айырмашылықтарының бірі.
Дегенмен, тілдің кейбір құрылымдары бірнеше жолдан тұруы мүмкін екенін есте ұстаған жөн. Мысалы, if шартты операторы:
|
1 2 |
if 1 < 2: print("Hello") |
Бұл жағдайда, егер 1 саны 2-ден аз болса, онда "Hello" жолы көрсетіледі. Мұнда шегініс болуы керек, өйткені басып шығару нұсқаулығы("Hello") өздігінен емес, if шартты операторының бөлігі ретінде қолданылады. Сонымен қатар, шегіністі, кодты жобалау жөніндегі нұсқаулыққа сәйкес, 4-ке бөлінетін бос орындар санынан жасаған жөн (яғни 4, 8, 16 және т.б.), егер шегініс 4 ЕМЕС, 5 болса, онда бағдарлама жұмыс жасай береді.
Мұндай құрылымдар онша көп емес, сондықтан қажет жерде және бос орындарды қоюдың қажеті жоқ жерде көп шатасулар болмауы керек.
Қаріп регистріне тәуелділігі
Python-бұл регистрге тәуелді тіл, сондықтан print және Print немесе PRINT жазулары әртүрлі қызмет атқаруы мүмкін. Егер консольге шығару үшін print әдісінің орнына Print әдісін қолдануға тырыссақ, бізде ештеңе шықпайды:
|
1 |
Print("Hello World") |
Комментарийлер
Кодтың бір немесе басқа бөлігін қандай қызмет атқаратындығын көрсету үшін түсініктемелер(комментарийлер) қолданылады. Бағдарламаны аудару және орындау кезінде аудармашы түсініктемелерді елемейді, сондықтан олар бағдарламаның жұмысына әсер етпейді.
Python-дағы комментарийлер блок және жазба түрінде болады. Олардың барлығы тор белгісімен (#) алдын-ала белгіленеді.
Блоктық комментарийлер жолдың басында қойылады:
|
1 2 |
# Хабарламаны консольға шығару print("Hello World") |
Кіші түсініктемелер тіл нұсқауларымен бірдей жолда орналасқан:
|
1 |
print("Hello World") # Хабарламаны консольға шығару |
Негізгі функциялары
Python бірқатар кірістірілген функцияларды ұсынады. Олардың кейбіреулері өте жиі қолданылады, әсіресе тіл үйренудің бастапқы кезеңдерінде, сондықтан оларды қарастырып өткен жөн.
Ақпаратты консольге шығару үшін - print() функциясы. Консольға шығаратын ақпаратты, біз функцияға аргумент ретінде жібереміз:
|
1 |
print("Hello Python") |
Егер консольге бірнеше мәндерді шығару қажет болса, онда біз оларды, үтір арқылы, басып шығару функциясына бере аламыз:
|
1 |
print("Толық есіміңіз:", "Азамат", "Мусин") |
Нәтижесінде барлық берілген мәндер бір жолда бос орындар арқылы көрсетіледі:
Full name: Азамат Мусин
Егер басып шығару функциясы шығыс үшін жауап берсе, онда енгізу функциясы ақпаратты бағдарламаға енгізуге жауап береді. Қосымша параметр ретінде бұл функция енгізу шақыруын қабылдайды және айнымалыға сақтай алатын енгізілген жолды қайтарады:
|
1 2 |
name = input("Есіміңізді енгізіңіз: ") print("Сәлем", name) |
Консольді шығару:
Есіміңізді енгізіңіз: Азамат
Сәлем Азамат
Айнымалылар мен мәлімет типтері
Айнымалы белгілі бір деректерді сақтайды, оны жадта сақталған белгілі бір мәліметтердің атауы не адресі ретінде қарастыруға болады. Python тіліндегі айнымалы атау алфавиттік таңбадан немесе астын сызу(_) белгісінен басталуы керек және алфавиттік-сандық таңбалар мен астын сызу белгісін қамтуы мүмкін. Сонымен қатар, айнымалының атауы Python тілінің кілт сөздерінің атауымен сәйкес келмеуі керек. Кілт сөздер көп емес, оларды есте сақтау оңай: and, as, assert, break, class, continue, def, del, elif, else, except, False, finally, for, from, global, if, import, in, is, lambda, None, nonlocal, not, or, pass, raise, return, True, try, while, with, yield.
Мысалы, айнымалы құрыңыз:
|
1 |
name = "Tom" |
Мұнда "Tom" жолын сақтайтын name айнымалысы анықталған.
Python-да айнымалы атаудың екі түрі қолданылады: camel case және underscore notation.
Camel case айнымалы атаудағы әрбір жаңа сөз бас әріптен басталады дегенді білдіреді. Мысалы:
|
1 |
userName = "Tom" |
Underscore notation айнымалы атаудағы сөздер астын сызу белгісімен бөлінетінін білдіреді. Мысалы:
|
1 |
user_name = "Tom" |
Сондай-ақ, регистрге тәуелділікті ескеру қажет, сондықтан Name және Name айнымалылары әртүрлі айнымалыларды білдіреді.
Айнымалының тип болады, ол сақталған мәліметтін түріне байланысты болады. Python-да көптеген мәлімет типтері бар, олар топтарға бөлінеді: сандар, реттіліктер, сөздіктер, жиынтықтар:
-
Boolean - логикалық, мәні шын(True) немесе жалған(False)
-
int - бүтін санды білдіреді, мысалы, 1, 4, 8, 50.
-
Float – жылжымалы нүктесі бар сандар, яғни бөлшек сандар, мысалы, 1.2 немесе 34.76
-
complex - күрделі сандар
-
str - жолдар, мысалы "Hello". Python 3 жолдары Unicode кодының таңбалар жиынтығын қолданады
-
bytes - 0-255 диапазонындағы сандар тізбегі
-
byte array - байттар массиві, bytes-ке ұқсас, олар өзгеруі мүмкін
-
list - тізімі
-
tuple - кортеж
-
set - бірегей объектілердің реттелмеген коллекциясы
-
frozen set - set-пен бірдей, тек өзгерту мүмкін емес (immutable)
-
dict -әр элементтің кілті мен мағынасы бар сөздік
Python-динамикалық жадты тіл. Ол берілген мән негізінде айнымалы деректер түрін анықтайды. Сонымен, қос немесе жалғыз тырнақшалардағы жолды белгілеу кезінде айнымалы str түріне ие болады. Бүтін санды тағайындау кезінде Python айнымалы түрін int ретінде автоматты түрде анықтайды. Айнымалыны float нысаны ретінде анықтау үшін оған бөлшек сан беріледі, онда бүтін және бөлшек бөлгіш нүкте болады. Жылжымалы нүкте санын экспоненциалды жазба түрінде анықтауға болады:
|
1 2 3 4 5 |
x = 3.9e3 print(x) # 3900.0 x = 3.9e-3 print(x) # 0.0039 |
Float санында тек 18 маңызды симол болуы мүмкін. Сонымен, бұл жағдайда тек екі таңба қолданылады - 3.9. Егер сан тым үлкен немесе тым аз болса, онда экспонент көмегімен санды ұқсас белгіге жаза аламыз. Жоғарыдағы жазбаларда е әрпі экспонентаны білдіреді, яғни, 3.9 санынан кейін орналасқан және ол сол санды қанша дәрежеге көбейту керектігін көрсетеді. Қарапайым тілмен айтқанда нүктенің қанша позицияға жылжитының көрсетеді, егер таңба болмаса оңға жылжиды, - таңбасы болса, солға жылжитынын көрсетеді.
Сонымен қатар, бағдарлама барысында айнымалы типін оған басқа типтегі мән беру арқылы өзгерте аламыз:
|
1 2 3 4 5 |
user_id = "12tomsmith438" # str типі print(user_id)
user_id = 234 # int типі print(user_id) |
Type() функциясының көмегімен ағымдағы айнымалы типін динамикалық түрде білуге болады:
|
1 2 3 4 5 |
user_id = "12tomsmith438" print(type(user_id)) # <class 'str'>
user_id = 234 print(type(user_id)) # <class 'int'> |
Сандармен орындалатын амалдар
Арифметикалық амалдар
Python барлық жалпы арифметикалық амалдарды қолдайды:
-
+
Екі санды қосу:
-
1
print(6 + 2) # 8
-
-
Екі санды азайту:
-
1
print(6 - 2) # 4
-
*
Екі санды көбейту:
-
-
1
print(6 * 2) # 12
-
-
/
Екі санды бөлу:
|
1 |
print(6 / 2) # 3.0 |
-
//
Екі санның бүтін бөлінуі:
|
1 2 |
print(7 / 2) # 3.5 print(7 // 2) # 3 |
Бұл операция бөлшек бөлігін тастап, бүтін санды бөлу нәтижесін қайтарады
-
**
Дәрежелеу:
|
1 |
print(6 ** 2) # 6-ның 2 дәрежесін шығарамыз. Нәтиже - 36 |
-
%
Бөлуден қалдық алу:
|
1 |
print(7 % 2) # 7-ні 2-ге бөлгендегі қалдық. Нәтиже - 1 |
Бұл жағдайда қалдықсыз 2-ге бөлінетін 7-нің ең жақын саны - 6. Сондықтан, бөлудің қалған бөлігі 7-6 = 1
Бірнеше арифметикалық операцияларды бірінен кейін бірін пайдалану кезінде оларды орындау приоритетіне сәйкес жүргізіледі. Басында үлкен приоритетті операциялар орындалады. Операциялардың приоритеттері келесі кестеде кему реті бойынша келтірілген.
|
Операциялар |
Бағыты |
|
** |
Сол жаққа анықтама |
|
* / // % |
Солдан оңға қарай |
|
+ - |
Солдан оңға қарай |
Келесі өрнекті орындасақ:
|
1 2 |
number = 3 + 4 * 5 ** 2 + 7 print(number) # 110 |
Мұнда үлкен приоритетпен (5 ** 2) операциясы алдымен орындалады, содан кейін нәтиже 4-ке (25 * 4) көбейтіледі, содан кейін қосу (3 + 100) жүреді, содан кейін қайтадан қосу (103 + 7) орындалады.
Операциялардың ретін өз қажеттілігіне байланысты орындау үшін жақшаларды пайдалануға болады:
|
1 2 |
number = (3 + 4) * (5 ** 2 + 7) print(number) # 224 |
Айта кету керек, бүтін сандар да, Бөлшек сандар да арифметикалық операцияларға қатыса алады. Егер бүтін сан (int) және өзгермелі нүкте (float) бір операцияға қатысса, онда бүтін сан float түріне келтіріледі.
Біріктірілген арифметикалық операциялар
Бірқатар арнайы операциялар, операцияның нәтижесін бірінші операндқа бірден сақтауға мүмкіндік береді:
-
+=
Қосу нәтижесін тағайындау
-
-=
Шегеру нәтижесін тағайындау
-
*=
Көбейту нәтижесін тағайындау
-
/=
Бөлу нәтижесін тағайындау
-
//=
Бүтін санды бөлу нәтижесін тағайындау
-
**=
Санның дәрежесін беру
-
%=
Бөлінуден қалған қалдықты беру
Операцияларды қолданудың мысалдары:
|
1 2 3 4 5 6 7 8 9 |
number = 10 number += 5 print(number) # 15
number -= 3 print(number) # 12
number *= 4 print(number) # 48 |
Сандарды түрлендіру функциялары
Python-да бірқатар енгізілген(дайын құрастырылған) функциялар сандармен жұмыс істеуге мүмкіндік береді. Атап айтқанда, int() және float() функциялары мәнді сәйкесінше int және float типіне келтіруге мүмкіндік береді.
Мысалы, бізде келесі код болсын:
|
1 2 3 |
first_number = "2" second_number = 3 third_number = first_number + second_number |
Біз "2" + 3 амалы 5-ке тең болады деп күтеміз. Алайда, бұл код ерекше жағдай туғызады, өйткені бірінші сан жолды білдіреді, дәлірек айтсақ, айнымалылардың типтері сәйкес келмейді. Бәрі дұрыс жұмыс істеуі үшін int() функциясын қолдана отырып, жолды санға келтіру керек:
|
1 2 3 4 |
first_number = "2" second_number = 3 third_number = int(first_number) + second_number print(third_number) # 5 |
Float () функциясы сол сияқты әрекет етеді, ол өзгермелі нүкте санына айналдырады. Бірақ тұтастай алғанда бөлшек сандармен операциялардың нәтижесі дәлдігі дұрыс болмауы мүмкін екенін ескеру қажет. Мысалы:
|
1 2 3 4 |
first_number = 2.0001 second_number = 5 third_number = first_number / second_number print(third_number) # 0.40002000000000004 |
Бұл жағдайда біз 0.40002 санын аламыз деп күтеміз, бірақ соңында нөлдер қатарынан тағы төрт пайда болады. Немесе тағы бір өрнек:
|
1 |
print(2.0001 + 0.1) # 2.1001000000000003 |
Бұл жағдайда нәтижені дөңгелектеу үшін round() функциясын қолдана аламыз:
|
1 2 3 4 |
first_number = 2.0001 second_number = 0.1 third_number = first_number + second_number print(round(third_number, 4)) # 2.1001 |
Функцияның бірінші параметрі - дөңгелектелетін сан, ал екіншісі – нәтижеде, үтірден кейін қалатын сандар саны.
Сандарды көрсету
Сандық айнымалының қалыпты жағдайда, ол ондық жүйеде мән алады. Бірақ Python-да ондықтан басқа, біз екілік, сегіздік және он алтылық жүйелерді қолдана аламыз.
Екілік жүйеде санды анықтау үшін оның мәні алдында 0 және B префиксі қойылады:
|
1 |
x = 0b101 # екілік жүйедегі 101 саны 5 білдіреді |
Сегіздік жүйеде санды анықтау үшін оның мәні алдында 0 және O префиксі қойылады:
|
1 |
a = 0o11 # сегіздік жүйедегі 11 саны 9 білдіреді |
Он алтылық жүйеде санды анықтау үшін оның мәні алдында 0 және X префиксі қойылады:
|
1 |
y = 0x0a # он алты жүйедегі a саны 10 білдіреді |
Шартты өрнектер
Бірқатар операциялар шартты өрнектерді орындай алады. Барлық шартты операциялар екі операндты қабылдайды және оның нәтижесі boolean типін білдіретін логикалық мәнді қайтарады. Логикалық типте тек екі мән бар - True (ақиқат) және False (жалған).
Салыстыру операциялары
Қарапайым шартты өрнектер екі мәнді салыстыратын салыстыру амалдарын қолданады. Python келесі салыстыру амалдарын пайдалануға мүмкіндік береді:
-
==
Егер екі операнд тең болса, True қайтарады. Әйтпесе, ол жалған қайтарады.
-
!=
Егер екі операнд тең болмаса, True қайтарады. Әйтпесе, ол жалған қайтарады.
-
>(артық)
Егер бірінші операнд екіншісінен үлкен болса, True қайтарады.
-
< (кем)
Егер бірінші операнд екіншісінен аз болса, True қайтарады.
-
> = (көп немесе тең)
Егер бірінші операнд екіншісінен үлкен немесе оған тең болса, True қайтарады.
-
< = (аз немесе тең)
Егер бірінші операнд екіншісінен кіші немесе оған тең болса, True қайтарады.
Салыстыру амалдарының мысалдары:
|
1 2 3 4 5 6 7 8 9 10 11 |
a = 5 b = 6 result = 5 == 6 # салыстыру амал нәтижесін айнымалыға сақтаймыз print(result) # False – 5 пен 6 тең емес print(a != b) # True print(a > b) # False – 6-дан 5 төмен print(a < b) # True
bool1 = True bool2 = False print(bool1 == bool2) # False - bool1 мәні bool2 мәніне тең емес |
Салыстыру операциялары әртүрлі типтерді - жолдарды, сандарды, логикалық мәндерді салыстыра алады, алайда операцияның екі операндасы да бірдей типті көрсетуі керек.
Логикалық операциялар
Күрделі шартты өрнектерді жасау үшін логикалық амалдар қолданылады. Python-да келесі логикалық операторлар бар:
-
and (логикалық көбейту)
Егер екі өрнек те шын болса, True қайтарады
|
1 2 3 4 |
age = 22 weight = 58 result = age > 21 and weight == 58 print(result) # True |
Бұл жағдайда and операторы екі өрнектің нәтижелерін салыстырады: age > 21 weight == 58. Егер осы екі өрнек те True-ді қайтарса, онда and операторы да True-ді қайтарады.
|
1 2 3 4 5 |
age = 22 weight = 58 isMarried = False result = age > 21 and weight == 58 and isMarried print(result) # False, өйткені isMarried = False |
-
or (логикалық қосу)
Егер өрнектердің кем дегенде біреуі шын болса, True қайтарады
|
1 2 3 4 |
age = 22 isMarried = False result = age > 21 or isMarried print(result) # True, өйткені age > 21 нәтижесі True болады |
-
not (логикалық теріске шығару)
Егер өрнек жалған болса, True қайтарады
|
1 2 3 4 |
age = 22 isMarried = False print(not age > 21) # False print(not isMarried) # True |
Егер and операторының операндтарының бірі жалған қайтарса, онда екінші операнд орындалмайды, өйткені оператор кез-келген жағдайда жалған қайтарады. Мұндай ерекшелік өнімділікті сәл арттыруға мүмкіндік береді, өйткені екінші операндты бағалауға кететін ресурстарды жұмсаудың қажеті жоқ.
Сол сияқты, егер or операторының операндтарының бірі True-ді қайтарса, онда екінші операнд тексерілмейді, өйткені оператор кез-келген жағдайда True-ді қайтарады.
Жолдармен операциялар
Жол тырнақшаға орналастырылған Unicode кодтаудағы таңбалар тізбегін білдіреді. Python-да біз жалғыз және қос тырнақшаларды қолдана аламыз:
|
1 2 3 |
name = "Tom" surname = 'Smith' print(name, surname) # Tom Smith |
Жолдардағы ең көп таралған операциялардың бірі - оларды біріктіру немесе байланыстыру. Жолдарды біріктіру үшін қосу белгісі қолданылады:
|
1 2 3 4 |
name = "Tom" surname = 'Smith' fullname = name + " " + surname print(fullname) # Tom Smith |
Екі жолды біріктіргенде бәрі оңай, бірақ жол мен санды қосу керек болса ше? Бұл жағдайда str() функциясын қолдана отырып, санды жолға келтіру керек:
|
1 2 3 4 |
name = "Tom" age = 33 info = "Name: " + name + " Age: " + str(age) print(info) # Name: Tom Age: 33 |
Эскейп-реттер
Стандартты таңбалардан басқа, жолдарда арнайы түрде оқылатын басқарушы эскап тізбегін қамтуы мүмкін. Мысалы, \n тізбегі жаңа жолды білдіреді. Сондықтан келесі өрнек:
|
1 |
print("Қонаққа баратын уақыт келді \nмені ескі досым тосып тұр") |
Нәтижесінде консольде екі жол көрсетіледі:
Қонаққа баратын уақыт келді
мені ескі досым тосып тұр
\t тізбегіде жолға табуляция белгісін енгізеді.
Сонымен қатар, жолда қолдану қиын болып көрінетін таңбалар бар. Мысалы, тырнақша. Жолдың ішінде тырнақшаларды (екі және жалғыз) көрсету үшін олардың алдына қиғаш сызық қойылады:
|
1 |
print("\"Central Perk\" кафесі") |
Жолдарды салыстыру
Жолдарды салыстыру туралы ерекше айту керек. Жолдарды салыстыру кезінде таңбалар мен олардың регистрі(Бас әріп пен кіші әріп) ескеріледі. Сонымен, сандық таңба кез-келген алфавиттік таңбадан аз болады. Жоғарғы регистрдегі алфавиттік таңба төменгі регистрдегі алфавиттік таңбаларға қарағанда шартты түрде аз. Мысалы:
|
1 2 3 4 5 |
str1 = "1a" str2 = "aa" str3 = "Aa" print(str1 > str2) # False, өйткені str1 айнымалысының бірінші мәні сан print(str2 > str3) # True, өйткені str2 айнымалысының бірінші мәні төменгі регистрде |
Сондықтан "1A" жолы шартты түрде "АА" жолынан аз. Алдымен салыстыру бірінші таңбамен жүреді. Егер екі жолдың бастапқы таңбалары сандарды білдірсе, онда кіші сан аз деп саналады, мысалы, "1A" "2A" - ден аз.
Егер бастапқы таңбалар алфавиттік таңбаларды бір регистрде көрсетсе, онда олар алфавит бойынша көрінеді. Сонымен, "аа" "ба"- дан аз, ал "ба" "ca" - дан аз.
Егер бірінші таңбалар бірдей болса, екінші таңбалар салыстырылады, егер олар бар болса.
Регистрге тәуелділік әрдайым қажет емес, өйткені іс жүзінде біз бірдей жолдармен жұмыс жасаймыз. Бұл жағдайда салыстырудан бұрын біз екі жолды да регистрлердің біріне апара аламыз.
lower() функциясы жолды төменгі регистрге, ал upper() функциясы жоғарғы регистрге аударады.
|
1 2 3 4 5 |
str1 = "Tom" str2 = "tom" print(str1 == str2) # False – жолдар тең емес
print(str1.lower() == str2.lower()) # True |
Шартты оператор if
Шартты конструкциялар шартты өрнектерді қолданады және олардың мәніне байланысты бағдарламаның орындалу бағыты өзгереді. Осындай құрылымдардың бірі-if конструкциясы. Оның құрылымы төменде көрсетілген:
|
1 2 3 4 5 6 |
if логикалық өрнек: командалар [elif логикалық өрнек: командалар] [else: командалар] |
Қарапайым түрде, if кілт сөзінен кейін логикалық өрнек жазылады. Егер бұл логикалық өрнек true-ді қайтарса, онда келесі нұсқаулар блогы орындалады, олардың әрқайсысы жаңа ағыннан басталып, жолдың басынан шегіністер болуы керек:
|
1 2 3 4 |
age = 22 if age > 21: print("Рұқсат бар") print("Жұмыстың аяқталуы") |
Бұл жағдайда age айнымалысының мәні 21-ден үлкен болғандықтан, if блогы орындалады, ал консоль келесі жолдарды шығарады:
Рұқсат бар
Жұмыстың аяқталуы
Шегіністі 4 бос орынға немесе 4-ке көбейтілген бос орындар санына жасаған жөн.
"Жұмыстың аяқталуы" хабарын көрсететін соңғы ағынға назар аударыңыз. Жолдың басынан ешқандай шегініс жоқ, сондықтан ол if блогына жатпайды және кез-келген жағдайда орындалады, тіпті егер if конструкциясында өрнек жалған мәнін қайтарса да.
Бірақ егер біз шегініс жасасақ, онда ол if дизайнына да қатысты болар еді:
|
1 2 3 4 |
age = 22 if age > 21: print("Рұқсат бар ") print("Жұмыстың аяқталуы ") |
Егер кенеттен бізге шартты өрнектің мәні жалған болғанда қолданатын амал қажети болса, онда біз else блогын қолдана аламыз:
|
1 2 3 4 5 |
age = 18 if age > 21: print("Рұқсат бар") else: print("Рұқсат жоқ") |
Егер age > 21 өрнегі шын мәнін қайтарса, онда if блогы орындалады, әйтпесе басқа else блогы орындалады.
Егер сізге бірнеше нұсқада шарттарды енгізу қажет болса, онда сіз командалары бар қосымша elif блоктарын қолдана аласыз.
|
1 2 3 4 5 6 7 |
age = 18 if age >= 21: print("Рұқсат бар") elif age >= 18: print("Рұқсат жартылай бар") else: print("Рұқсат жоқ") |
Кұрделі if конструкциялары
If конструкциясының ішіне өз кезегінде басқа if конструкцияларын енгізе аламыз:
|
1 2 3 4 5 6 7 |
age = 18 if age >= 18: print("17-ден көп") if age > 21: print("21-ден көп") else: print("18-ден 21-ге дейін") |
Күрделі if өрнектері де шегіністерден басталуы керек, ал кірістірілген конструкциялардағы командаларда да шегіністерге ие болуы керек. Дұрыс орналастырылмаған шегіністер бағдарламаның логикасын өзгерте алады. Сонымен, алдыңғы мысал келесіге ұқсас емес:
|
1 2 3 4 5 6 7 |
age = 18 if age >= 18: print("17-ден көп") if age > 21: print("21-ден көп") else: print("18-ден 21-ге дейін") |
Енді біз шартты конструкцияларды қолданатын шағын бағдарламаны жазамыз. Бұл бағдарлама айырбастау пунктінің бір түрі болады:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# Айырбастау пунктінің бағдарламасы
usd = 57 euro = 60
money = int(input("Аударатын соманы енгізіңіз: ")) currency = int(input("Валюта кодын енгізіңіз (доллар - 400, евро - 401): "))
if currency == 400: cash = round(money / usd, 2) print("Валюта: АҚШ доллары") elif currency == 401: cash = round(money / euro, 2) print("Валюта: евро") else: cash = 0 print("Белгісіз валюта")
print("Аударылған сома:", cash) |
Input () функциясын қолдана отырып, пайдаланушы енгізген деректерді консольге аламыз. Сонымен қатар, бұл функция деректерді жол түрінде қайтарады, сондықтан енгізілген деректерді арифметикалық амалдарда қолдануға болатындай етіп int() функциясын қолдана отырып, оны бүтін санға келтіру керек.
Бағдарлама пайдаланушы айырбасталатын қаражат мөлшерін және айырбасталатын валюта кодын енгізетінін білдіреді. Валюта кодтары қарапайым түрде алынған: доллар үшін 400 және евро үшін 401.
If конструкциясын қолдана отырып, біз валюта кодын тексеріп, тиісті валюта бағамына бөлеміз. Бөлу процесінде өзгермелі нүктесі бар өте ұзақ сан пайда болғандықтан, онда үтірден кейін көптеген белгілер болуы мүмкін, ол round() функциясын қолдана отырып, үтірден кейін екі санға дейін дөңгелектенеді.
Соңында алынған мән консольге көрсетіледі. Мысалы, бағдарламаны іске қосыңыз және кейбір деректерді енгізіңіз:
Аударатын соманы енгізіңіз: 20000
Dfk.nf rjlsy (доллары - 400, евро - 401): 401
Валюта: евро
К получению: 333.33
Циклдар
Циклдар, белгілі бір шарттың сақталуына байланысты, кейбір әрекеттерді қайталауға мүмкіндік береді.
While циклі
Біз қарастыратын бірінші цикл - бұл while цикл. Оның келесі ресми синтаксисі бар:
|
1 2 |
while шарт: командалар |
Кілт сөзден кейін нартты өрнек көрсетіледі және while ішінде орналасқан командалар, шартты өрнек ақиқат мән қайтарғанда ғана орындалады.
Циклге кіретін барлық командалар келесі жолдарда орналасқан және жолдың басынан шегініс болуы керек.
|
1 2 3 4 5 6 |
choice = "y"
while choice.lower() == "y": print("Сәлем") choice = input("Жалғастыру үшін Y басыңыз, ал шығу үшін кез-келген пернені басыңыз: ") print("Бағдарлама жұмысы тоқтады") |
Бұл жағдайда таңдау циклі "Y" немесе "y"латын әрпі болған кезде жалғасады.
Мына мысалда цикл блогының өзі екі командадан тұрады. Алдымен "Сәлем" хабары көрсетіледі, содан кейін choice айнымалысы үшін жаңа мән енгізіледі. Егер пайдаланушы Y-тен басқа пернені басса, циклден шығу пайда болады, өйткені таңдау choice.lower() == "y" жалған мәнді қайтарады. Мұндай циклдің әрбір қайталануы итерация деп аталады.
Сондай-ақ, соңғы басып шығару print("Бағдарлама жұмысы тоқтады ") командасында жолдың басынан шегініс жоқ, сондықтан ол циклге кірмейді.
Келесі мысал - факториалды есептеу:
|
1 2 3 4 5 6 7 8 9 |
#! Факториалды есептеу бағдарламасы
number = int(input("Сан енгізіңіз: ")) i = 1 factorial = 1 while i <= number: factorial *= i i += 1 print(number, " санының факториалы тең ", factorial) |
Мұнда ол консольге пернеден белгілі бір санды енгізеді, цикл енгізілген сан i айнымалысынан үлкен немесе тең болса қайталай береді, егер і айнымалысы енгізілген саннан кіші болған жағдайда, цикл жұмысы тоқтатылады.
Консольді шығару:
Нөмірді енгізіңіз: 6
6 санының факториалы тең 720
For циклы
For конструкциясы цмклдың басқа түрін ұсынады. For циклі белгілі бір сандар жиынтығындағы әр сан үшін орындалады. Сандар жиынтығы range () функциясы арқылы құрылады. Ресми цикл синтаксисі:
|
1 2 |
for int_var in range_функциясы: командалар |
For кілт сөзінен кейін бүтін сандарды сақтайтын int_var айнымалысы жазылады (айнымалы атауы кез келген болуы мүмкін), содан кейін in кілт сөзі, range() функциясын шақыру және қос нүкте.
Келесі жолдан бастап цикл нұсқауларының блогы орналасқан, олар жолдың басынан шегіністерге ие болуы керек.
Циклды орындау кезінде Python range функциясы жасаған коллекциядан барлық сандарды алып int_var айнымалысында сақтап отырады. Бірінші итерация кезінде цикл жиыннын(коллекция) бірінші санды алады, екіншісінде - екінші сан және т.б., жиындағы барлық сандарды қолдануға int_var айнымалысына көшіріп шығады.
Факториалды есептеу мысалын қарастырайық:
|
1 2 3 4 5 6 7 |
#! Факториалды for циклымен есептеу
number = int(input("Санды енгіз: ")) factorial = 1 for i in range(1, number+1): factorial *= i print(number, " санының факториалы тең ", factorial) |
Алдымен консольден сан енгізіледі. Циклде біз range функциясы жасаған коллекциядағы сандар сақталатын і айнымалысын анықтаймыз.
Мұнда range функциясы екі аргументті алады - жинақтың бастапқы саны (мұнда 1 саны) және соңғы сан (яғни number +1).
Консольден 6 саны енгізілді делік, содан кейін range функциясын шақыру келесі форманы алады:
|
1 |
range(1, 6+1): |
Бұл функция 1-ден басталатын және 7-ге дейін бүтін сандармен толтырылатын коллекция жасайды. Яғни, бұл жинақ [1, 2, 3, 4, 5, 6] болады.
Циклды орындау кезінде сандар осы коллекциядан і айнымалыға ауысады, ал циклдің өзінде і айнымалы факториалға көбейтіледі. Нәтижесінде біз санның факториалдық мәнін аламыз.
Бағдарлама нәтижесін консольге шығару:
Санды енгізіңіз: 6
6 санының факториалы тең 720
Range функциясы
Range функциясы келесі формаларға ие:
-
range(stop): 0-ден stop-қа дейінгі барлық бүтін сандарды қайтарады
-
range(start, stop): start (қоса) бастап stop (қоса) дейінгі аралықтағы барлық бүтін сандарды қайтарады. Жоғарыда факториалды бағдарламада дәл осы форма қолданылды.
-
range (start, stop, step): start (қоса алғанда) бастап stop (қоса алғанда) дейінгі аралықта бүтін сандарды қайтарады, олар step мәніне артып отырады(қадамы).
Range функциясының қолдану мысалдары:
|
1 2 3 4 |
range(5) # 0, 1, 2, 3, 4 range(1, 5) # 1, 2, 3, 4 range(2, 10, 2) # 2, 4, 6, 8 range(5, 0, -1) # 5, 4, 3, 2, 1 |
Мысалы, 0-ден 4-ке дейінгі барлық сандарды шығарамыз:
|
1 2 |
for i in range(5): print(i, end=" ") |
Күрделі циклдар
Кейбір циклдардың ішінде басқа циклдер болуы мүмкін. Көбейту кестесін шығару мысалын қарастырайық:
|
1 2 3 4 |
for i in range(1, 10): for j in range(1, 10): print(i * j, end="\t") print("\n") |
for i in range(1, 10) сыртқы циклы 9 рет іске қосылады, өйткені range функциясымен қайтарылған коллекцияда 9 сан болады. Ішкі цикл for j in range(1, 10) сыртқы циклдің бір итерациясы үшін 9 рет, ал сыртқы циклдің барлық итерациялары үшін сәйкесінше 81 рет іске қосылады.
Ішкі циклдің әр итерациясында i және j сандарының көбейтіндісі консольге шығарылады.:
1 2 3 4 5 6 7 8 9
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56 63
8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81
Циклден шығу. break және continue
Циклды басқару үшін break және continue арнайы кілт сөздерін пайдалануға болады. Break операторы циклден шығуды жүзеге асырады. Ал continue операторы циклдің келесі итерациясына көшуді орындайды.
Break мәлімдемесін циклде оны одан әрі орындауға сәйкес келмейтін жағдайлар пайда болған кезде қолдануға болады. Келесі мысалды қарастырыңыз:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#! Ақша аудару пункті бағдарламасы
print("Шығу үшін Y батырмасын басыңыз")
while True: data = input("Айырбастау сомасын енгізіңіз: ") if data.lower() == "y": break # циклден шығу money = int(data) cache = round(money/ 455, 2) print("Берілетін ақша ", cache, " доллар")
print("Аудару пунктінің жұмысы бітті") |
Мұнда біз шексіз циклмен айналысамыз, өйткені while True шарты әрқашан шынайы және әрқашан орындалады. Бұл шексіз орындалуы керек бағдарламаларды құрудың танымал әдісі.
Циклде біз консольден кіріс аламыз. Пайдаланушы сан енгізеді деп болжаймыз - айырбастау үшін шартты ақша сомасы. Егер пайдаланушы "Y" немесе "y" әрпін енгізсе, онда break операторының көмегімен біз циклден шығып, бағдарламаны тоқтатамыз. Әйтпесе, енгізілген соманы айырбастау бағамына бөлеміз, round функциясын қолдана отырып, нәтижені дөңгелектеп, оны консольге шығарамыз. Сонымен, пайдаланушы y пернесін басу арқылы бағдарламадан шыққысы келгенше шексіздікке дейін бағдарлама жұмыс жасай береді.
Бағдарламаны консольдік шығару:
Шығу үшін Y батырмасын басыңыз
Айырбастау сомасын енгізіңіз: 20000
Берілетін ақша 43.95 доллар
Айырбастау сомасын енгізіңіз: Y
Аудару пунктінің жұмысы бітті
Бірақ пайдаланушы теріс санды енгізсе ше? Бұл жағдайда бағдарлама теріс нәтиже береді, бұл дұрыс емес. Бұл жағдайда, есептеуден бұрын, мәннің нөлден аз екенін тексеріп аламыз, ал егер аз болса, continue операторын қолдана отырып, оны аяқтамай циклдің келесі итерациясына ауысуды орындай аламыз:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#! Ақша аудару пункті бағдарламасы
print("Шығу үшін Y батырмасын басыңыз ")
while True: data = input("Айырбастау сомасын енгізіңіз: ") if data.lower() == "y": break # циклден шығу money = int(data) if money < 0: print("Енгізілген сан оң болу қажет!") continue cache = round(money / 455, 2) print("Берілетін ақша ", cache, " доллар")
print("Аудару пунктінің жұмысы бітті ") |
Сондай-ақ, Нұсқаулық while блогына немесе кірістірілген if дизайнына жататындығын анықтау үшін шегіністер қайтадан қолданылатынына назар аударамын.
Бұл жағдайда біз теріс сома үшін нәтиже ала алмаймыз:
Шығу үшін Y батырмасын басыңыз
Айырбастау сомасын енгізіңіз: -20000
Енгізілген сан оң болуы керек!
Айырбастау сомасын енгізіңіз: 20000
Берілетін ақша 43.95 доллар
Аудару пунктінің жұмысы бітті
Функциялар
Функциялар белгілі бір тапсырманы орындайтын және бағдарламаның басқа бөліктерінде қайта пайдалануға болатын код блогын білдіреді. Функцияның ресми синтаксисі:
|
1 2 |
def функции_атауы ([параметрлері]): командалар |
Функцияның анықтамасы функцияның атауынан, параметрлері бар жақшалар жиынтығынан және қос нүктеден тұратын def өрнегінен басталады. Жақшадағы параметрлер міндетті емес. Келесі жолдан функция орындайтын командалар блогы орналасады. Функцияның барлық командаларында жолдың басынан шегіністер бар, осылай python функцияға кіретін командаларды анықтайды.
Мысалы, қарапайым функцияны анықтау:
|
1 2 |
def say_hello(): print("Hello") |
Функция say_hello деп аталады. Оның параметрлері жоқ және ол консольге "Hello" жолын көрсететін бір командадан тұрады.
Функцияны шақыру үшін функцияның атауы көрсетіледі, содан кейін жақшада оның барлық параметрлері үшін мәндер беріледі. Мысалы:
|
1 2 3 4 5 6 |
def say_hello(): print("Hello")
say_hello() say_hello() say_hello() |
Мұнда say_hello функциясы қатарынан үш рет шақырылады. Нәтижесінде консольге келесі нәтиже шығады:
Hello
Hello
Hello
Енді функцияны параметрлермен анықтап және қолданып көрейік:
|
1 2 3 4 5 6 |
def say_hello(name): print("Сәлем, ", name)
say_hello("Айбар") say_hello("Азамат") say_hello("Айша") |
Функция name параметрін қабылдайды және функция шақырылған кезде, параметрдің орнына мәнді жібере аламыз:
Сәлем, Айбар
Сәлем, Азамат
Сәлем, Айша
Келісім бойынша мәндері
Функцияның кейбір параметрлерін функцияны анықтаған кезде олар үшін келісім мәндерді орната аламыз. Мысалы:
|
1 2 3 4 5 |
def say_hello(name="Айбар"): print("Сәлем, ", name)
say_hello() say_hello("Сұлтан") |
Мұнда name параметрі міндетті емес. Егер функцияны шақырған кезде оған мән берілмесе, онда келісім мән қолданылады, яғни "Айбар" есімі.
Атауы бар параметрлер
Мәндерді беру кезінде функция оларды берілген ретпен параметрлермен салыстырады. Мысалы, келесі функция болсын:
|
1 2 3 4 |
def display_info(name, age): print("Есімі: ", name, "\t", "Жасы: ", age)
display_info("Айбар", 22) |
Функция шақырылған кезде бірінші "Айбар" мәні бірінші параметрге - name параметріне, екінші мән - 22 саны екінші параметр - age параметріне беріледі. Осылай рет бойынша кете береді. Алайда, аталған параметрлерді пайдалану ретін өзгертуге болады:
|
1 2 3 4 |
def display_info(name, age): print("Name:", name, "\t", "Age:", age)
display_info(age=22, name="Tom") |
Аталған параметрлер функция шақырылған кезде, оған параметр мәнін атауымен бірге көрсету қажет.
Саны белгісіз параметрлер
Жұлдызша таңбасын пайдаланып параметрлердің белгісіз санын анықтауға болады:
|
1 2 3 4 5 6 7 8 9 10 11 |
def sum(*params): result = 0 for n in params: result += n return result
sumOfNumbers1 = sum(1, 2, 3, 4, 5) # 15 sumOfNumbers2 = sum(3, 4, 5, 6) # 18 print(sumOfNumbers1) print(sumOfNumbers2) |
Бұл жағдайда sum функциясы бір параметрді алады - *params, бірақ параметр атауының алдындағы жұлдызша, шын мәнінде, осы параметрдің орнына бірнеше мәндер санын немесе мәндер жиынтығын бере алатынымызды көрсетеді. Функцияның өзінде for циклін қолдана отырып, сіз осы жиынтықтан өтіп, берілген мәндермен әртүрлі әрекеттер жасай аласыз. Мысалы, бұл жағдайда сандардың қосындысы қайтарылады.
Нәтижені қайтару
Функция нәтижені қайтара алады. Ол үшін функцияда қайтару операторы қолданылады, содан кейін қайтару мәні көрсетіледі:
|
1 2 3 4 5 6 7 8 9 10 |
def exchange(usd_rate, money): result = round(money/usd_rate, 2) return result
result1 = exchange(60, 30000) print(result1) result2 = exchange(56, 30000) print(result2) result3 = exchange(65, 30000) print(result3) |
Функция мәнді қайтаратындықтан, біз бұл мәнді кез-келген айнымалыға тағайындай аламыз, содан кейін оны қолдана аламыз: result2 = exchange(56, 30000).
Python-да функция бірден бірнеше мәнді қайтара алады:
|
1 2 3 4 5 6 7 |
def create_default_user(): name = "Айбар" age = 33 return name, age
user_name, user_age = create_default_user() print("Есімі: ", user_name, "\t Жасы: ", user_age) |
Мұнда create_default_user функциясы екі мәнді қайтарады: name және age. Функция шақырылған кезде бұл мәндер рет-ретімен user_name және user_age айнымалыларына беріледі және біз оларды қолдана аламыз.
Main функция
Бағдарламада көптеген функцияларды анықтауға болады. Олардың барлығын ретке келтіру үшін арнайы негізгі функцияны қосу жақсы тәжірибе болып саналады, онда басқа функциялар шақырылады:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
def main(): say_hello("Айбар") usd_rate = 56 money = 30000 result = exchange(usd_rate, money) print("Берілетін ақша ", result, " доллар")
def say_hello(name): print("Сәлем, ", name)
def exchange(usd_rate, money): result = round(money/usd_rate, 2) return result
# main функциясын шақыру main() |
Айнымалылардың көріну облыстары
Көріну облысы немесе scope оны пайдалануға болатын айнымалының аймағын анықтайды. Python-да айнымалының көріну аймағына байланысты екі түрі болады: ғаламдық және жергілікті(глобальды және локальды).
Ғаламдық айнымалы кез-келген функциядан тыс анықталады және бағдарламадағы кез-келген функция оны қолдана алады. Мысалы:
|
1 2 3 4 5 6 7 8 9 10 |
name = "Айбар"
def say_hi(): print("Сәлем ", name)
def say_bye(): print("Сау бол ", name)
say_hi() say_bye() |
Мұнда name айнымалысы ғаламдық және ғаламдық ауқымға ие. Мұнда анықталған екі функция да оны еркін пайдалана алады.
Жергілікті айнымалының ғаламдық айнымалыдан ерекшелігі, функцияның ішінде анықталады және тек осы функциядан қол жетімді, яғни жергілікті ауқымға ие:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
def say_hi(): name = "Самат" surname = "Саматов" print("Сәлем ", name, surname)
def say_bye(): name = "Айбар" print("Сау бол ", name)
say_hi() say_bye() |
Бұл жағдайда екі функцияның әрқайсысында жергілікті name айнымалылары анықталады. Бұл айнымалылар бірдей аталғанымен, бірақ бұл екі түрлі айнымалы, олардың әрқайсысы тек өз функциялары аясында қол жетімді. Сондай-ақ, say_hi функциясында surname айнымалысы анықталған, ол жергілікті, сондықтан say_bye функциясында біз оны пайдалана алмаймыз.
Егер біз жергілікті функцияда ғаламдық айнымалыны өзгерткіміз келсе және жергілікті айнымалыны анықтамасақ, онда global кілт сөзін қолдануымыз керек:
|
1 2 3 4 |
def say_bye(): global name name = "Bob" print("Good bye", name) |
Python-да, көптеген басқа бағдарламалау тілдеріндегідей, ғаламдық айнымалыларды пайдаланбаған жөн. Оларды, көбінесе, өзгертілмейтін бірнеше сандар ұшін қолдануға бролады.
|
1 2 3 4 5 6 7 8 9 |
PI = 3.14
# дөңгелектің аумағын есептеу def get_circle_square(radius):
print("Дөңгелектің аумағы ", radius, " радиусы бойынша тең ", PI * radius * radius)
get_circle_square(50) |
Бұл жағдайда 3.14 саны Pi тұрақтысымен ұсынылған. Бұл мән негізінен өзгермейді, сондықтан оны функциялардан шығарып, тұрақты ретінде анықтауға болады. Әдетте, тұрақты атау бас әріптермен анықталады.
Модульдер
Python тіліндегі модуль басқа бағдарламаларда қайта пайдалануға болатын коды бар жеке файлды білдіреді.
Модульді құру үшін модульді білдіретін *.py кеңейтімі бар нақты файлды құру керек. Файл атауы модульдің атауын бірдей болады. Содан кейін бұл файлда бір немесе бірнеше функцияны анықтау керек.
Бағдарламаның негізгі файлы hello.py деп аталсын, біз оған сыртқы модульдерді қосып көрейік.
Модульді қосу үшін алдымен жаңа модульді анықтаңыз: біз шақыратын жаңа account.py файлын құрайық, hello.py орналасқан қалтада құрылуы керек. Егер PyCharm немесе басқа IDE қолданылса, онда екі файл да бір жобаға сәйкес келеді.
Python-дағы Модульдер

Сурет 2 – Python модульдері
Тиісінше, модуль account деп аталады және онда келесі кодты анықтаңыз:
|
1 2 3 4 5 6 7 |
def calculate_income(rate, money, month): if money <= 0: return 0
for i in range(1, month+1): money = round(money + money * rate / 100 / 12, 2) return money |
Мұнда calculate_income функциясы анықталған, ол параметрлер ретінде салымның пайыздық мөлшерлемесін, салым сомасын және салым салынатын кезеңді алады және осы кезеңнің соңында алынған соманы есептейді.
Енді осы модуль функциясын біз hello.py файлында қолданамыз:
|
1 2 3 4 5 6 7 8 9 10 11 |
#! Банктік есеп бағдарламасы import account
rate = int(input("Пайыздық мөлшерлемені енгізіңіз: ")) money = int(input("Соманы енгізіңіз: ")) period = int(input("Шотты жүргізу кезеңін айлармен енгізіңіз: "))
result = account.calculate_income(rate, money, period) print("Есептеу параметрлері:\n", "Сома: ", money, "\n", "Пайыз: ", rate, "\n", "Кезең: ", period, "\n", "Кезеңнің соңындағы шот сомасыв: ", result) |
Модульді пайдалану үшін оны импорт операторының көмегімен импорттау керек, содан кейін модульдің аты көрсетіледі: import account.
Модульдің функционалдығына қол жеткізу үшін оның аттар кеңістігін алу керек. Келісім бойынша, ол модульдің атымен сәйкес келеді, яғни біздің жағдайда ол да account аталады.
Модуль атауларының кеңістігін алғаннан кейін, біз оның функцияларына келесі схема арқылы қатынай аламыз атаулар_кеңістігі.функция:
|
1 |
account.calculate_income(rate, money, period) |
Осыдан кейін біз негізгі hello.py сценарийін іске қоса аламыз және ол account.py модулін өз жұмысында қолдана алады, атап айтқанда, консоль шығысы келесідей болуы мүмкін:
Пайыздық мөлшерлемені енгізіңіз: 10
Соманы енгізіңіз: 300000
Шотты жүргізу кезеңін айлармен енгізіңіз: 6
Шот параметрлері:
Сомасы: 300000
Пайыз: 10
Кезең: 6
Кезеңнің соңындағы шот сомасы: 315315.99
Келісім бойынша, модульді импорттаған кезде, ол сол атау кеңістігі арқылы қол жетімді. Алайда, біз бұл ережені өзгерте аламыз. Сонымен, as кілт сөзі модульді басқа аттар кеңістігімен қолдануға мүмкіндік береді. Мысалы:
|
1 2 3 4 5 |
import account as acc
#...............
result = acc.calculate_income(rate, money, period) |
Бұл жағдайда аттар кеңістігі acc деп аталады.
Тағы бір опция модульдің функционалдығын from кілт сөзін қолдана отырып, ағымдағы модульдің Ғаламдық аттар кеңістігіне импорттау мүмкіндік береді:
|
1 2 3 4 5 |
from account import calculate_income
#...............
result = calculate_income(rate, money, period) |
Бұл жағдайда біз account модулінен ғаламдық аттар кеңістігіне calculate_income функциясын импорттаймыз. Сондықтан біз оны модуль атауын көрсетпей пайдалана аламыз.
Егер account модулінде бірнеше функция болса, оларды ғаламдық аттар кеңістігіне бір өрнекпен импорттауға болады:
|
1 2 3 4 5 |
from account import *
#...............
result = calculate_income(rate, money, period) |
Бірақ айта кету керек, жаһандық аттар кеңістігіне импорттау функция атауларының қақтығыстарына әкелуі мүмкін. Мысалы, егер бізде бірдей файлда бірдей функция анықталған болса, онда функцияны шақырған кезде қате пайда болуы мүмкін. Сондықтан импортты Ғаламдық аттар кеңістігіне пайдаланудан аулақ болған жөн.
Ерекшеліктерді өңдеу
Python-да бағдарламалау кезінде біз қателіктердің екі түріне тап болуымыз мүмкін. Бірінші тип синтаксистік қателерді білдіреді (syntax error). Олар бастапқы кодты жазу кезінде бағдарламалау тілінің синтаксисін бұзу нәтижесінде пайда болады. Егер мұндай қателер болса, бағдарламаны құрастыру мүмкін емес. Қандай да бір құрастыру ортасында(IDE) жұмыс істеген кезде, мысалы, PyCharm-да, IDE-нің өзі синтаксистік қателерді таба алады және оларды қандай да бір жолмен ерекшелей алады.
Қателердің екінші түрі - орындау қателері (runtime error). Олар бағдарлама орындау барысында пайда болады. Мұндай қателіктер ерекше жағдайлар деп те аталады. Мысалы, өткен тақырыптарда біз санды жолға түрлендіруді қарастырдық:
|
1 2 3 |
string = "5" number = int(string) print(number) |
Бұл сценарий сәтті құрастырылып, орындалады, өйткені "5" жолын санға айналдыруға болады. Алайда тағы бір мысал келтірейік:
|
1 2 3 |
string = "hello" number = int(string) print(number) |
Бұл сценарийді орындау кезінде ValueError-дан ерекшелігі пайда болады, өйткені "hello" жолын санға айналдыруға болмайды. Бір жағынан, мұнда жол санды білдірмейтіні анық, бірақ қолданушыны мәлімет енгізген кезде дұрыс емес, біз күткендей болмауы мүмкін:
|
1 2 3 |
string = input("Введите число: ") number = int(string) print(number) |
Ерекшелік болған кезде бағдарламаның жұмысы үзіледі және мұндай олқылық болдырмау үшін Python-да ерекше жағдайларды өңдеу үшін try .. except конструкциясы бар, оның ресми синтаксисі:
|
1 2 3 4 |
try: командалар except [ерекше_жағдай_типі]: командалар |
Ерекшелік туындауы мүмкін барлық негізгі код try кілт сөзінен кейін орналастырылады. Егер осы кодта ерекшелік пайда болса, онда try блогындағы кодтың жұмысы үзіліп, орындау except блогына өтеді.
Ерекшелік кілт сөзінен кейін қандай ерекшелік өңделетінін көрсетуге болады (мысалы, ValueError немесе KeyError). Except сөзінен кейін, ерекше жағдай туындаған кезде орындалатын командалар орналасады.
Жолды санға түрлендіру мысалында ерекше жағдайды өңдеуді қарастырайық:
|
1 2 3 4 5 6 |
try: number = int(input("Сан енгізіңіз: ")) print("Енгізілген сан:", number) except: print("Түрлендіру сәтсіз аяқталды") print("Бағдарламаны аяқтау") |
Жолды енгізіңіз:
Сан енгізіңіз: Сәлем
Түрлендіру сәтсіз аяқталды
Бағдарламаны аяқтау
Консоль шығысынан көрініп тұрғандай, сан орнына жолды енгізген кезде консольге санды шығармайды және бағдарламаның орындалуы except блогына өтеді.
Дұрыс санды енгізсек:
Нөмірді енгізіңіз: 22
Енгізілген сан: 22
Бағдарламаны аяқтау
Енді бәрі дұрыс орындалады, ерекшелік туындамайды және сәйкесінше except блогы орындалмайды.
Жоғарыдағы мысалда, кодта пайда болуы мүмкін барлық ерекшеліктер бірден өңделді. Алайда, біз except сөзінен кейін, өңделетін ерекшеліктің түрін анықтай аламыз:
|
1 2 3 4 5 6 |
try: number = int(input("Сан енгізіңіз: ")) print("Енгізілген сан:", number) except ValueError: print("Санды түрлендіру сәтсіз аяқталды") print("Бағдарламаны аяқтау") |
Егер жағдай бағдарламада әр түрлі ерекшеліктер пайда болуы мүмкін болса, онда біз оларды қосымша except өрнектерін қолдана отырып жеке-жеке өңдей аламыз:
|
1 2 3 4 5 6 7 8 9 10 11 |
try: number1 = int(input("Бірінші санды енгізіңіз: ")) number2 = int(input("Екінші санды енгізіңіз: ")) print("Бөлу нәтижесі:", number1/number2) except ValueError: print("Түрлендіру сәтсіз аяқталды") except ZeroDivisionError: print("Санды нөлге бөлу әрекеті анықталды") except Exception: print("Жалпы ерекшеліктер") print("Бағдарламаны аяқтау") |
Егер жолды санға түрлендіру нәтижесінде ерекшелік болса, онда ол except ValueError блогымен өңделеді. Егер екінші сан нөлге тең болса, яғни нөлге бөлу әрекеті пайда болады, ал математика ережелері бойынша сан нөлге бөлінбейді және оны zerodivisionerror except блогы өңдейді.
Ерекшелік түрі барлық ерекше жағдайларға ұшырайтын жалпы ерекшелікті білдіреді. Сондықтан, бұл жағдайда ValueError немесе ZeroDivisionError түрін көрсетпейтін кез-келген ерекшелік ерекше ерекшелік блогында өңделеді:.
Finally блогы
Ерекше жағдайларды өңдеу кезінде қосымша finally блогын пайдалануға болады. Бұл блок ерекшелік туындаса да, туындамаса да орындалады:
Әдетте, finally блогы файлдарды жабу сияқты, пайдаланылатын ресурстарды босату үшін қолданылады.
Ерекше жағдай жайлы ақпарат алу
As операторының көмегімен біз ерекше жағдай жайлы барлық ақпаратты айнымалыға жібере аламыз, оны артынан except блогында пайдалануға болады:
|
1 2 3 4 5 6 |
try: number = int(input("Сан енгізіңіз: ")) print("енгізілген сан:", number) except ValueError as e: print("Ерекше жағдай жайлы мәліметтер", e) print("Бағдарламаны аяқтау") |
Қате енгізу мысалы:
Сан енгізіңіз: fdsf
Ерекше жағдай жайлы мәліметтер invalid literal for Int () with base 10: 'fdsf'
Бағдарламаны аяқтау
Ерекше жағдайларды ұйымдастыру
Кейде осы немесе басқа ерекше жағдайларды қолмен жасау қажет. Ол үшін raise операторы қолданылады.
|
1 2 3 4 5 6 7 8 9 10 11 |
try: number1 = int(input("Бірінші санды енгізіңіз: ")) number2 = int(input("Екінші санды енгізіңіз: ")) if number2 == 0: raise Exception("Екінші сан 0-ге тең болмауы қажет") print("Екі санды бөлу нәтижесі:", number1/number2) except ValueError: print("Енгізілген мәліметтер дұрыс емес") except Exception as e: print(e) print("Бағдарламаны аяқтау") |
Ерекше жағдайды шақырған кезде біз оған хабарлама жібере аламыз, содан кейін оны пайдаланушыға шығаруға болады:
Бірінші санды енгізіңіз: 1
Екінші санды енгізіңіз: 0
Екінші сан 0-ге тең болмауы керек
Бағдарламаны аяқтау
3 бөлім. Тізімдер, кортеждер және сөздіктер
Тізім
Деректер жиынтығымен жұмыс істеу үшін Python тізімдер, кортеждер және сөздіктер сияқты күрделі мәлімет типтерін ұсынады.
Тізім (list) элементтер жиынтығын немесе реттілігін сақтайтын деректер түрін білдіреді. Төртбұрышты жақшада ([]) тізімді құру үшін оның барлық элементтері үтір арқылы тізімделеді. Көптеген бағдарламалау тілдерінде массив деп аталатын ұқсас мәліметтер құрылымы бар. Мысалы, сандар тізімін анықтайық:
|
1 |
numbers = [1, 2, 3, 4, 5] |
Сондай-ақ, тізімді құру үшін list конструкторын пайдалануға болады():
|
1 2 |
numbers1 = [] numbers2 = list() |
Бұл тізім құру ережелерінің жұмысы ұқсас - олар бос тізімді жасайды.
Тізімді құру үшін list конструкторы басқа тізімді қабылдай алады:
|
1 2 |
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9] numbers2 = list(numbers) |
Тізім элементтеріне қатынау үшін тізімдегі элемент нөмірін білдіретін индекстерді пайдалану керек. Индекстер нөлден басталады. Яғни, екінші элементте 1 индексі болады. Ал тізімнің элементтеріне соңынан қатынаса, индекс -1-ден бастап, теріс индекстерді қолдануға болады. Яғни, соңғы элементте -1 индексі, ал оның алдындағы -2 және т.б. болады.
|
1 2 3 4 5 6 7 |
numbers = [1, 2, 3, 4, 5] print(numbers[0]) # 1 print(numbers[2]) # 3 print(numbers[-3]) # 3
numbers[0] = 125 # тізімнің бірінші элементін өзгертеміз print(numbers[0]) # 125 |
Егер сіз бірдей мәнді бірнеше рет қайталайтын тізімді жасауыңыз керек болса, онда жұлдызша * таңбасын пайдалануға болады. Мысалы, алты бестен тұратын тізімді анықтау үшін:
|
1 2 |
numbers = [5] * 6 # [5, 5, 5, 5, 5, 5] print(numbers) |
Сонымен қатар, егер бізге сандардың реттелген тізімі қажет болса, оны жасау үшін range функциясын қолдану ыңғайлы, бұл функцияны қолданудың 3 әдісі бар:
-
range (end): 0-ден end санына дейінгі сандар жиынтығы құрылады
-
range( start, end): start санынан end санына дейінгі сандар жиынтығы құрылады
-
range( start, end, step): start санынан бастап, step қадаммен end санына дейінгі сандар жиынтығы құрылады
|
1 2 3 4 5 6 |
numbers = list(range(10)) print(numbers) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] numbers = list(range(2, 10)) print(numbers) # [2, 3, 4, 5, 6, 7, 8, 9] numbers = list(range(10, 2, -2)) print(numbers) # [10, 8, 6, 4] |
Мысалы, тізімнің келесі екі анықтамасы бірдей жұмыс атқарады, бірақ range функциясы арқылы біз код көлемін азайтамыз:
|
1 2 |
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9] numbers2 = list(range(1, 10)) |
Тізімде тек бір типті нысандар болуы міндетті емес. Біз бір уақытта бір тізімге жолдарды, сандарды, басқа деректер түрлерінің нысандарын орналастыра аламыз:
|
1 |
objects = [1, 2.6, "Hello", True] |
Тізімнің барлық элементтеріне қатынау
Тізім элементтерін санау үшін сіз for циклін де, while циклін де қолдана аласыз.
Цикл арқылы санау:
|
1 2 3 |
companies = ["Microsoft", "Google", "Oracle", "Apple"] for item in companies: print(item) |
Мұнда range функциясының орнына біз қол жетімді компаниялар тізімін бірден алмастыра аламыз.
While циклі арқылы қатынау:
|
1 2 3 4 5 |
companies = ["Microsoft", "Google", "Oracle", "Apple"] i = 0 while i < len(companies): print(companies[i]) i += 1 |
Len () функциясын пайдаланып, санау үшін, біз тізімнің ұзындығын анықтаймыз. I санауышты пайдаланып, санауыштың мәні тізімнің ұзындығына тең болғанша элементті консольға шығарып береді.
Тізімдерді салыстыру
Екі тізім бірдей элементтер жиынтығын қамтыса, тең деп саналады:
|
1 2 3 4 5 6 |
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9] numbers2 = list(range(1,10)) if numbers == numbers2: print("numbers equal to numbers2") else: print("numbers is not equal to numbers2") |
Бұл жағдайда екі тізім де тең болады.
Тізімдермен жұмыс істеу әдістері мен функциялары
Элементтерді басқару үшін тізімдерде бірқатар әдістер бар. Олардың жиі қолданылатындары:
-
append(item): тізімнің соңына item элементін қосады;
-
insert (index, item): тізімге index индексі бойынша item элементін қосады
-
remove(item) : item элементін жояды. Элементтің бірінші енгізуі ғана жойылады. Егер элемент табылмаса, ValueError ерекшелігі пайда болады
-
clear (): тізімнен барлық элементтерді жою
-
index(item): item элементінің индексін қайтарады. Егер элемент табылмаса, ValueError ерекшелік пайда болады
-
pop ([index]): index индексі бойынша элементті жояды және қайтарады. Егер индекс берілмесе, онда ол соңғы элементті жояды.
-
count (item): item элементінің тізімдегі санын қайтарады
-
sort ([key]): элементтерді сұрыптайды. Келісім бойынша өсу бойынша сұрыптайды. Бірақ key параметрімен сұрыптау функциясын бере аламыз.
-
reverse (): тізімдегі барлық элементтерді кері ретпен орналастырады
Сонымен қатар, Python тізімдермен жұмыс істеу үшін бірқатар енгізілген функцияларды ұсынады:
-
len (list): тізімнің ұзындығын қайтарады
-
sortired (list, [key]): сұрыпталған тізімді қайтарады
-
min (тізім): тізімнің ең кіші элементін қайтарады
-
max (list): тізімнің ең үлкен элементін қайтарады
Элементтерді қосу және жою
Элементті қосу үшін append() және insert() әдістері қолданылады, ал жою үшін remove(), pop() және clear () әдістері қолданылады.
Әдістерді пайдалану тәсілдері:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
users = ["Tom", "Bob"]
# тізім соңына қосу users.append("Alice") # ["Tom", "Bob", "Alice"] # Екінші орынға енгізу users.insert(1, "Bill") # ["Tom", "Bill", "Bob", "Alice"]
# Элемент индексін алу i = users.index("Tom") # алынған индекс бойынша элементті жою removed_item = users.pop(i) # ["Bill", "Bob", "Alice"]
last_user = users[-1] # соңғы элементті жою users.remove(last_user) # ["Bill", "Bob"]
print(users)
# Барлық элементтерді жою users.clear() |
Элементтің бар-жоғын тексеру
Егер белгілі бір элемент табылмаса, remove және index әдістері ерекше жағдай туғызады. Мұндай жағдайды болдырмау үшін, элементпен жұмыс жасамас бұрын, оның бар-жоғын in кілт сөзімен тексеруге болады:
|
1 2 3 4 5 6 |
companies = ["Microsoft", "Google", "Oracle", "Apple"] item = "Oracle" # жойылатын элемент if item in companies: companies.remove(item)
print(companies) |
Егер элемент тізімде болса, item in companies өрнегі АҚИҚАТ мәнін қайтарады. Сондықтан, if item in companies құрылымы тізімде элементтің болуына байланысты келесі нұсқаулар блогын орындай алады.
Элементтерді есептеу
Егер тізімде белгілі бір элемент қанша рет бар екенін білу қажет болса, count() әдісін қолдануға болады:
|
1 2 3 4 |
users = ["Tom", "Bob", "Alice", "Tom", "Bill", "Tom"]
users_count = users.count("Tom") print(users_count) # 3 |
Сұрыптау
Өсу бойынша сұрыптау үшін sort() әдісі қолданылады:
|
1 2 3 4 |
users = ["Tom", "Bob", "Alice", "Sam", "Bill"]
users.sort() print(users) # ["Alice", "Bill", "Bob", "Sam", "Tom"] |
Егер деректерді кері ретпен сұрыптау қажет болса, сұрыпталғаннан кейін reverse() әдісін қолдана аламыз:
|
1 2 3 4 5 |
users = ["Tom", "Bob", "Alice", "Sam", "Bill"]
users.sort() users.reverse() print(users) # ["Tom", "Sam", "Bob", "Bill", "Alice"] |
Сұрыптау кезінде іс жүзінде екі объект салыстырылады және олардың қайсысы "кішірек", сол "үлкенірек" элемент алдына қойылып отырылады. "Көбірек" және "аз" ұғымдары өте шартты. Егер сандар үшін бәрі қарапайым болса - сандар өсу ретімен реттеледі, ал жолдар мен басқа нысандар үшін жағдай күрделірек. Атап айтқанда, жолдар бірінші таңбалар бойынша бағаланады. Егер бірінші таңбалар тең болса, екінші таңбалар және т.б. бағаланады. Сандық таңба алфавиттік бас таңбадан гөрі "аз" деп саналады, ал бас таңба кіші әріптен кіші болып саналады. Жолдарды салыстыру туралы толығырақ жолдармен операциялар бөлімінде сипатталған.
Осылайша, егер тізім жоғарғы және төменгі регистрдегі жолдарды біріктірсе, онда біз дұрыс емес нәтижелерге қол жеткізе аламыз, өйткені біз үшін "bob" жолы "Tom"жолына дейін тұруы керек. Стандартты сұрыптау әрекетін өзгерту үшін sort () параметрі ретінде функция жібере аламыз:
|
1 2 3 4 |
users = ["Tom", "bob", "alice", "Sam", "Bill"]
users.sort(key=str.lower) print(users) # ["alice", "Bill", "bob", "Sam", "Tom"] |
Сұрыптау әдісінен басқа, біз екі формасы бар енгізілген sorted функциясын қолдана аламыз:
-
sorted (list): list тізімін сұрыптайды
-
sorted (list, key): list тізімін элементтерге key функциясын қолдану арқылы сұрыптайды
|
1 2 3 4 |
users = ["Tom", "bob", "alice", "Sam", "Bill"]
sorted_users = sorted(users, key=str.lower) print(sorted_users) # ["alice", "Bill", "bob", "Sam", "Tom"] |
Бұл функцияны пайдалану кезінде сұрыпталған тізімді өзгертпейтінін және барлық сұрыпталған элементтерді нәтиже ретінде қайтарылатын жаңа тізімге енгізетінін ескеру қажет.
Минималды және максималды мәндер
Python-ның енгізілген min() және max() функциялары тізімнен сәйкесінше минималды және максималды мәндерді табуға мүмкіндік береді:
|
1 2 3 |
numbers = [9, 21, 12, 1, 3, 15, 18] print(min(numbers)) # 1 print(max(numbers)) # 21 |
Тізімдерді көшіру
Тізімдерді көшіру кезінде тізімдер өзгеретін типті білдіретінін ескеру керек, сондықтан егер екі айнымалы да бірдей тізімді көрсетсе, онда бір айнымалының өзгеруі басқа айнымалыға да әсер етеді:
|
1 2 3 4 5 6 |
users1 = ["Tom", "Bob", "Alice"] users2 = users1 users2.append("Sam") # users1 және users2 екеуі де бір тізімді қолданып тұр print(users1) # ["Tom", "Bob", "Alice", "Sam"] print(users2) # ["Tom", "Bob", "Alice", "Sam"] |
Бұл "жеңіл көшіру" деп аталады (shallow copy). Әдетте, мұндай әрекет жасаған жағымсыз. Элементтерді көшіру үшін, бірақ сонымен бірге айнымалылар әртүрлі тізімдерді көрсету қажет болса, терең көшіру қолдану керек (deep copy). Ол үшін енгізілген copy модулінде анықталған deepcopy() әдісін қолдануға болады:
|
1 2 3 4 5 6 7 8 |
import copy
users1 = ["Tom", "Bob", "Alice"] users2 = copy.deepcopy(users1) users2.append("Sam") # users1 және users2 айнымалылары екі түрлі объектіні білдіреді print(users1) # ["Tom", "Bob", "Alice"] print(users2) # ["Tom", "Bob", "Alice", "Sam"] |
Тізімнің бір бөлігін көшіру
Егер сіз бүкіл тізімді емес, оның белгілі бір бөлігін ғана көшіруіңіз керек болса, онда біз келесі арнайы синтаксистерді қолдана аламыз:
-
list [: end]: end параметрі арқылы, сол элементке дейін көшірілетін элемент индексі беріледі
-
list [start: end]: start параметрі өажетті элементтердің бастапқы индексін көрсетеді
-
list [start: end : step]: step параметрі элементтер тізімнен көшірілетін қадамды көрсетеді. келісім бойынша, бұл параметр 1-ге тең.
|
1 2 3 4 5 6 7 8 9 10 |
users = ["Tom", "Bob", "Alice", "Sam", "Tim", "Bill"]
slice_users1 = users[:3] # 0-ден 3-ке дейін print(slice_users1) # ["Tom", "Bob", "Alice"]
slice_users2 = users[1:3] # 1-ден 3-ке дейін print(slice_users2) # ["Bob", "Alice"]
slice_users3 = users[1:6:2] # 1-ден 6-ға дейін 2 қадаммен print(slice_users3) # ["Bob", "Sam", "Bill"] |
Тізімдерді қосу
Тізімдерді біріктіру үшін қосу операциясы қолданылады (+):
|
1 2 3 4 |
users1 = ["Tom", "Bob", "Alice"] users2 = ["Tom", "Sam", "Tim", "Bill"] users3 = users1 + users2 print(users3) # ["Tom", "Bob", "Alice", "Tom", "Sam", "Tim", "Bill"] |
Тізімдер тізімі
Тізімдер стандартты жолдар, сандар сияқты деректерден басқа, басқа тізімдерді де қамтуы мүмкін. Мұндай тізімдерді кірістірілген тізімдер, жолдар ретінде әрекет ететін, кестелермен байланыстыруға болады. Мысалы:
|
1 2 3 4 5 6 7 8 |
users = [ ["Tom", 29], ["Alice", 33], ["Bob", 27] ] print(users[0]) # ["Tom", 29] print(users[0][0]) # Tom print(users[0][1]) # 29 |
Кірістірілген тізім элементіне жүгіну үшін бірнеше индекстерді пайдалану керек: users [0][1] - бірінші кірістірілген тізімнің, екінші элементінің индекстері.
Жалпы тізімді, сондай-ақ кірістірілген тізімдерді қосу, жою және өзгерту әдеттегі (бір өлшемді) тізімдерге ұқсас:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
users = [ ["Tom", 29], ["Alice", 33], ["Bob", 27] ] # Күрделі тізі құру user = list() user.append("Bill") user.append(41) # Енгізілген тізімді қосу users.append(user)
print(users[-1]) # ["Bill", 41]
# Енгізілген тізімге қосу users[-1].append("+79876543210")
print(users[-1]) # ["Bill", 41, "+79876543210"]
# Енгізілген тізімнен жою users[-1].pop() print(users[-1]) # ["Bill", 41]
# соңғы енгізілген тізімді жою users.pop(-1)
# Бірінші элементті жою users[0] = ["Sam", 18] print(users) # [ ["Sam", 18], ["Alice", 33], ["Bob", 27]] |
Ішкі тізімдерге қатынау:
|
1 2 3 4 5 6 7 8 |
users = [ ["Tom", 29], ["Alice", 33], ["Bob", 27] ] for user in users: for item in user: print(item, end=" | ") |
Консольге шығару:
Tom | 29 | Alice | 33 | Bob | 27 |
Кортеж
Кортеж (tuple) элементтердің тізбегін білдіреді, олар тізімге ұқсас, тек кортеж өзгермейтін (immutable) түрі болып табылады. Сондықтан біз кортеж элементтерін қосып немесе алып тастай алмаймыз, оны өзгерте де алмаймыз.
Кортежді құру үшін, оларды жақшалардың ішіне, мәндерін үтірмен бөліп орналастыру керек:
|
1 2 |
user = ("Tom", 23) print(user) |
Сондай-ақ, кортежді анықтау үшін біз жақшаларды қолданбай, үтір арқылы мәндерді тізімдеп жаза аламыз:
|
1 2 |
user = "Tom", 23 print(user) |
Егер кенеттен кортеж бір элементтен тұрса, онда бір элементтен кейін үтір қою керек:
|
1 |
user = ("Tom",) |
Тізімнен кортеж жасау үшін, тізімді, кортеж қайтаратын tuple () функциясына беруге болады:
|
1 2 3 |
users_list = ["Tom", "Bob", "Kate"] users_tuple = tuple(users_list) print(users_tuple) # ("Tom", "Bob", "Kate") |
Кортеж ішіндегі элементтерге қатынау, тізімдегі сияқты индекс бойынша жүргізіледі. Сонымен қатар, элементтерді индекстеу, тізімнің индекстеуімен бірдей, кортеждің басынан алған кезде нөлден басталады және элементтерді тізімнің соңынан алған кезде -1 басталады:
|
1 2 3 4 5 6 7 |
users = ("Tom", "Bob", "Sam", "Kate") print(users[0]) # Tom print(users[2]) # Sam print(users[-1]) # Kate
# кортеждің 2-ден 4-ші элементіне дейін бөлігін алу print(users[1:4]) # ("Bob", "Sam", "Kate") |
Бірақ кортеж өзгермейтін тип болғандықтан (immutable), біз оның элементтерін өзгерте алмаймыз. Яғни, келесі жазба жұмыс істемейді:
|
1 |
users[1] = "Tim" |
Қажет болса, біз кортеж элементтерін жеке айнымалылар ретінде жасай аламыз:
|
1 2 3 4 5 |
user = ("Tom", 22, False) name, age, isMarried = user print(name) # Tom print(age) # 22 print(isMarried) # False |
Функциядан бірден бірнеше мәнді қайтару қажет болған кезде түйіндерді пайдалану әсіресе ыңғайлы. Функция бірнеше мәнді қайтарған кезде, ол іс жүзінде кортежге оралады:
|
1 2 3 4 5 6 7 8 9 10 11 |
def get_user(): name = "Tom" age = 22 is_married = False return name, age, is_married
user = get_user() print(user[0]) # Tom print(user[1]) # 22 print(user[2]) # False |
Кірістірілген Len() функциясын қолдана отырып, сіз кортеж ұзындығын ала аласыз:
|
1 2 |
user = ("Tom", 22, False) print(len(user)) # 3 |
Кортежді санау
Кортежді санау үшін сіз for және while стандартты циклдерін қолдана аласыз. for циклі үшін:
|
1 2 3 |
user = ("Tom", 22, False) for item in user: print(item) |
While циклі үшін:
|
1 2 3 4 5 6 |
user = ("Tom", 22, False)
i = 0 while i < len(user): print(user[i]) i += 1 |
Тізім сияқты, in кортеж өрнегін пайдаланып, сіз кортежде элементтің бар-жоғын тексере аласыз:
|
1 2 3 4 5 6 |
user = ("Tom", 22, False) name = "Tom" if name in user: print("Қолданушының есімі Tom") else: print("Қолданушының есімі басқа") |
Күрделі кортеждер
Бір кортежде элементтер түрінде басқа кортеждер болуы мүмкін. Мысалы:
|
1 2 3 4 5 6 7 8 9 10 11 |
countries = ( ("Germany", 80.2, (("Berlin",3.326), ("Hamburg", 1.718))), ("France", 66, (("Paris", 2.2),("Marsel", 1.6))) )
for country in countries: countryName, countryPopulation, cities = country print("\nCountry: {} population: {}".format(countryName, countryPopulation)) for city in cities: cityName, cityPopulation = city print("City: {} population: {}".format(cityName, cityPopulation)) |
Мұнда елдерді білдіретін countries кортежі әрқайсысы, бөлек ел болатын, кортеждерден тұрады.
Енгізілген кортеждердің үш элементі бар: елдің атауы, оның халқы мен қаласы. Қалалар жеке кортежді білдіреді, мұнда әрбір жеке қала - бұл қаланың атауы мен оның тұрғындарының саны бар ішкі кортеж.
Сөздіктер
Тізімдер және кортеждермен қатар, Python-да сөздік (dictionary) деп аталатын тағы бір мәліметтер құрылымы бар. Бірқатар бағдарламалау тілдерінде де, ұқсас құрылымдар бар екенін айта кеткен жөн(C# сөздігі, PHP-дегі ассоциативті массив).
Тізім сияқты, сөздік элементтер жинағын сақтайды. Бірақ, сөздіктегі әр элементтің өзіндік мәні бар ерекше кілт бар болады.
Сөздік анықтау үшін келесі синтаксисті қолдану керек:
|
1 |
dictionary = { кілт1: мән1, кілт2: мән2, ....} |
Бірнеше сөздікті анықтайық:
|
1 2 3 |
users = {1: "Tom", 2: "Bob", 3: "Bill"}
elements = {"Au": "Алтын", "Fe": "Темір", "H": "Сутегі", "O": "Оттегі"} |
Users сөздігінде сандар кілт ретінде, ал жолдар мән ретінде қолданылады. Elements сөздігінде жолдар кілт ретінде қолданылады.
Бірақ кілттер мен жолдар бірдей болуы міндетті емес. Олар әр түрлі типтен тұра алады:
|
1 |
objects = {1: "Tom", "2": True, 3: 100.6} |
Сондай-ақ, біз бос сөздікті элементтерсіз анықтай аламыз:
|
1 |
objects = {} |
немесе :
|
1 |
objects = dict() |
Тізімнен сөздікке түрлендіру
Сөздік пен тізімнің құрылымдары өзгеше болғанымен, тізімдердің жекелеген түрлері үшін оларды dict() функциясын қолдана отырып сөздікке айналдыру мүмкіндігі бар. Ол үшін тізім кірістірілген тізімдер жиынтығын сақтауы керек. Әрбір кірістірілген тізім екі элементтен тұруы керек-сөздікке айналдырылған кезде бірінші элемент кілт болады, ал екіншісі-мән:
|
1 2 3 4 5 6 7 |
users_list = [ ["+111123455", "Tom"], ["+384767557", "Bob"], ["+958758767", "Alice"] ] users_dict = dict(users_list) print(users_dict) # {"+111123455": "Tom", "+384767557": "Bob", "+958758767": "Alice"} |
Сол сияқты, сөздікке екі өлшемді түйіндерді түрлендіруге болады, олар өз кезегінде екі элементтен тұрады:
|
1 2 3 4 5 6 7 |
users_tuple = ( ("+111123455", "Tom"), ("+384767557", "Bob"), ("+958758767", "Alice") ) users_dict = dict(users_tuple) print(users_dict) |
Элементтерді қолдану және өзгерту
Сөздік элементтеріне қатынау үшін кілтті пайдалану керек:
|
1 |
dictionary[кілт] |
Мысалы, сөздіктегі элементтерді аламыз және өзгертеміз:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
users = { "+11111111": "Tom", "+33333333": "Bob", "+55555555": "Alice" }
# "+11111111" кілті бойынша элементті аламыз print(users["+11111111"]) # Tom
# "+33333333" кілті бар элементке мән орнату users["+33333333"] = "Bob Smith" print(users["+33333333"]) # Bob Smith |
Егер мұндай кілті бар элементтің мәнін орнату кезінде сөздікте болмаса, онда ол қосылады:
|
1 |
users["+4444444"] = "Sam" |
Егер біз сөздікте жоқ кілтпен мән алуға тырыссақ, онда Python KeyError қатесін жасайды:
|
1 |
user = users["+4444444"] # KeyError |
Бұл жағдайды ескерту үшін элементке хабарласпас бұрын сөздіктегі кілттің бар-жоғын кілт in сөздік өрнегін қолдана отырып тексере аламыз. Егер кілт сөздікте болса, онда бұл өрнек ақиқат мәнін қайтарады:
|
1 2 3 4 5 6 |
key = "+4444444" if key in users: user = users[key] print(user) else: print("Элемент табылмады") |
Сондай-ақ, элементтерді алу үшін get әдісін қолдануға болады, оның екі түрі бар:
-
get(key): key кілті бар элементті сөздіктен қайтарады. Егер мұндай кілті бар элемент болмаса, онда None мәнін қайтарады;
-
get(key, default): сөздіктен key кілті бар элементті қайтарады. Егер мұндай кілті бар элемент болмаса, келісім мәнді default қайтарады.
|
1 2 3 |
key = "+55555555" user = users.get(key) user = users.get(key, "Unknown user") |
Өшіру
Элементті кілтпен жою үшін del операторы қолданылады:
|
1 2 3 4 5 6 7 8 |
users = { "+11111111": "Tom", "+33333333": "Bob", "+55555555": "Alice" }
del users["+55555555"] print(users) |
Бірақ егер мұндай кілт сөздікте болмаса, онда KeyError ерекшелігі пайда болатынын ескерген жөн. Сондықтан, элементті жоймас бұрын, осы кілт бойынша элементтің бар-жоқтығын тексерген жөн.
|
1 2 3 4 5 6 7 |
key = "+55555555" if key in users: user = users[key] del users[key] print(user, "жойылды") else: print("Элемент табылған жоқ") |
Жоюдың тағы бір түрі - pop() әдісі. Оның да екі формасы бар:
-
pop(key): элементті key кілті арқылы жояды және жойылған элементті қайтарады. Егер осы кілті бар элемент болмаса, онда KeyError ерекшелік пайда болады;
-
pop(key, default): элементті key кілті арқылы жояды және жойылған элементті қайтарады. Егер осы кілті бар элемент болмаса, онда default мәні қайтарылады.
|
1 2 3 4 5 6 7 8 9 10 11 |
users = { "+11111111": "Tom", "+33333333": "Bob", "+55555555": "Alice" } key = "+55555555" user = users.pop(key) print(user)
user = users.pop("+4444444", "Unknown user") print(user) |
Егер барлық элементтерді жою қажет болса, онда бұл жағдайда clear() әдісін қолдануға болады:
|
1 |
users.clear() |
Сөздіктерді көшіру және біріктіру
Copy() әдісі жаңа сөздікті қайтару арқылы сөздік мазмұнын көшіреді:
|
1 2 |
users = {"+1111111": "Tom","+3333333": "Bob","+5555555": "Alice"} users2 = users.copy() |
Update() әдісі екі сөздікті біріктіреді:
|
1 2 3 4 5 6
7 |
users = {"+1111111": "Tom","+3333333": "Bob","+5555555": "Alice"}
users2 = {"+2222222": "Sam","+6666666": "Kate"} users.update(users2)
print(users) # {"+1111111": "Tom", "+3333333": "Bob", "+5555555": "Alice", "+2222222": "Sam", "+6666666": "Kate"} print(users2) # {"+2222222": "Sam", "+6666666": "Kate"} |
Бұл жағдайда users2 сөздігі өзгеріссіз қалады. Басқа сөздіктің элементтері қосылған users сөздігі өзгертіледі. Бірақ егер екі бастапқы сөздіктің де өзгеріссіз болуы қажет болса және біріктірудің нәтижесін үшінші сөздікке көшіру қажет болса, онда сіз бір сөздікті екіншісіне алдын-ала көшіре аласыз:
|
1 2 |
users3 = users.copy() users3.update(users2) |
Cөздікті санау
Сөздікті санау үшін сіз for циклын қолдана аласыз:
|
1 2 3 4 5 6 7 |
users = { "+11111111": "Tom", "+33333333": "Bob", "+55555555": "Alice" } for key in users: print(key, " - ", users[key]) |
Элементтерді санау кезінде біз ағымдағы элементтің кілтін аламыз және ол арқылы элементтің өзін ала аламыз.
Элементтерді санаудың тағы бір тәсілі - items() әдісін қолдану:
|
1 2 |
for key, value in users.items(): print(key, " - ", value) |
Items() әдісі кортеждер жиынтығын қайтарады. Әрбір кортежде элементтің кілті мен мәні бар, оны санау кезінде біз бірден key және value айнымалыларына қатынай аламыз.
Кілттерді санау және мәндерді санау мүмкіндіктері де бар. Кілттерді санау үшін біз сөздікте keys() әдісін шақыра аламыз:
|
1 2 |
for key in users.keys(): print(key) |
Шынын айтсақ, бұл санау әдісінің мағынасы жоқ, өйткені keys() әдісін шақырмай, біз жоғарыда көрсетілгендей кілттерді санай аламыз.
Тек мәндерді санау үшін біз сөздікте values() әдісін шақыра аламыз:
|
1 2 |
for value in users.values(): print(value) |
Кешенді сөздіктер
Сандар мен жолдар сияқты қарапайым объектілерден басқа, сөздіктер күрделі нысандарды да сақтай алады - тізімдер, кортеждер немесе сөздіктер:
|
1 2 3 4 5 6 7 8 9 10 11 |
users = { "Tom": { "phone": "+971478745", "email": "tom12@gmail.com" }, "Bob": { "phone": "+876390444", "email": "bob@gmail.com", "skype": "bob123" } } |
Бұл жағдайда сөздіктің әр элементінің мәні өз кезегінде жеке сөздікті білдіреді.
Кірістірілген сөздіктің элементтеріне жүгіну үшін сәйкесінше екі кілтті пайдалану керек:
|
1 2 |
old_email = users["Tom"]["email"] users["Tom"]["email"] = "supertom@gmail.com" |
Бірақ егер біз сөздікте жоқ кілттің мәнін алуға тырыссақ, Python-ның KeyError ерекшелігі пайда болады:
|
1 |
tom_skype = users["Tom"]["skype"] # KeyError |
Қатені болдырмау үшін сөздіктегі кілттің бар-жоғын тексеруге болады:
|
1 2 3 4 5 |
key = "skype" if key in users["Tom"]: print(users["Tom"]["skype"]) else: print("skype is not found") |
Қалған амалдар ұшін, күрделі және кірістірілген сөздіктерге қарапайым сөздіктермен жұмыс істейтін амалдарды қолданамыз және жұмыс принципі ұқсас.
Жиындар
Жиын (set) элементтер жиынтығының тағы бір түрін білдіреді. Жиындарды анықтау үшін элементтер фигуралық жақшалар қолданылады:
|
1 2 |
users = {"Tom","Bob","Alice", "Tom"} print(users) # {"Tom","Bob","Alice"} |
Print функциясы "Tom" элементін бір рет шығарғанына қарамастан, бұл элемент жиынның анықтамасында екі рет кездесетініне назар аударыңыз. Себебі жиынтықта тек ерекше мәндер бар.
Сондай-ақ, жиындарды анықтау үшін элементтердің тізімі немесе жиынтығы берілетін set() функциясын қолдануға болады:
|
1 |
users3 = set(["Mike", "Bill", "Ted"]) |
Бос жиын жасау үшін set функциясын қолдану ыңғайлы:
|
1 |
users = set() |
Жиынның ұзындығын алу үшін кірістірілген Len() функциясы қолданылады:
|
1 2 |
users = {"Tom","Bob","Alice"} print(len(users)} # 3 |
Элементтерді қосу
Бір элементті қосу үшін add() әдісі шақырылады:
|
1 2 3 |
users = set() users.add("Sam") print(users) |
Элементтерді жою
Бір элементті жою үшін, жойылатын элемент берілетін remove() әдісі шақырылады. Бірақ, егер, мұндай элемент жиынтықта болмаса, онда қате пайда болатындығын есте ұстаған жөн. Сондықтан, элементті жоймас бұрын, in операторының көмегімен элементтің бар-жоғын тексеру керек:
|
1 2 3 4 5 6 |
users = {"Tom", "Bob", "Alice"}
user = "Tom" if user in users: users.remove(user) print(users) # {"Bob", "Alice"} |
Сондай-ақ, жою үшін Сіз discard() әдісін қолдана аласыз, ол элемент болмаған кезде, ерекше жағдай туғызбайды:
|
1 2 |
user = "Tim" users.discard(user) |
Барлық элементтерді жою үшін clear() әдісі шақырылады:
|
1 |
users.clear() |
Жиынды санау (Перебор множества)
Элементтерді санау үшін сіз for циклды қолдана аласыз:
|
1 2 3 4 |
users = {"Tom","Bob","Alice"}
for user in users: print(user) |
Санау кезінде әр элемент user айнымалысына орналастырылады.
Жиындарға қолданылатын амалдар
Copy() әдісін қолдана отырып, бір жиынның мазмұнын басқа айнымалыға көшіруге болады:
|
1 2 |
users = {"Tom","Bob","Alice"} users3 = users.copy() |
Union() әдісі екі жиынды біріктіреді және жаңа жиынды қайтарады:
|
1 2 3 4 5 |
users = {"Tom","Bob","Alice"} users2 = {"Sam","Kate", "Bob"}
users3 = users.union(users2) print(users3) # {"Bob", "Alice", "Sam", "Kate", "Tom"} |
Жиындардың қиылысы екі жиынтықта бір уақытта болатын элементтерді ғана алуға мүмкіндік береді. Intersection() әдісі жиындардың қиылысу операциясын жасайды және жаңа жиынды қайтарады:
|
1 2 3 4 5 |
users = {"Tom","Bob","Alice"} users2 = {"Sam","Kate", "Bob"}
users3 = users.intersection(users2) print(users3) # {"Bob"} |
Intersection әдісінің орнына логикалық көбейту амалын қолдана аламыз:
|
1 2 3 4 |
users = {"Tom","Bob","Alice"} users2 = {"Sam","Kate", "Bob"}
print(users & users2) # {"Bob"} |
Жоғарыдағы екі амалда бірдей әрекет орындайды.
Тағы бір амал - жиындардың айырмашылығы, бірінші жиында бар, бірақ екіншісінде жоқ элементтерді қайтарады. Жиындардың айырмашылығын алу үшін difference() әдісін немесе азайту әрекетін қолдануға болады:
|
1 2 3 4 5 6 |
users = {"Tom","Bob","Alice"} users2 = {"Sam","Kate", "Bob"}
users3 = users.difference(users2) print(users3) # {"Tom", "Alice"} print(users - users2) # {"Tom", "Alice"} |
Жиындар арасындағы қатынастар
Issubset() әдісі ағымдағы жиынның, басқа жиынның ішкі жиынтығы (яғни бөлігі) екенін анықтауға мүмкіндік береді:
|
1 2 3 4 5 |
users = {"Tom", "Bob", "Alice"} superusers = {"Sam", "Tom", "Bob", "Alice", "Greg"}
print(users.issubset(superusers)) # True print(superusers.issubset(users)) # False |
Issuperset() әдісі, керісінше, егер басқа жиын, ағымдағы жиынның ішкі жиынтығы болса, ақиқат мәнін қайтарады, бір сөзбен айтқанда, алдыңғы амалға қарама-қарсы әрекет орындайды:
|
1 2 3 4 5 |
users = {"Tom", "Bob", "Alice"} superusers = {"Sam", "Tom", "Bob", "Alice", "Greg"}
print(users.issuperset(superusers)) # False print(superusers.issuperset(users)) # True |
frozen set
Frozen set типі - өзгертуге болмайтын жиындардың түрі болып табылады. Оны жасау үшін frozenset функциясы қолданылады:
|
1 |
users = frozenset({"Tom", "Bob", "Alice"}) |
Frozenset функциясына элементтер жиынтығы беріле алады - тізім, түйін немесе басқа жиын.
Сондықтан, біз мұндай жиынға, жаңа элементтерді қоса да, жоя да алмаймыз. Шын мәнінде, frozen set үшін амалдар саны шектеулі:
-
len(s): жиынның ұзындығын қайтарады
-
x in s: Егер x элементі s жиынында болса, True қайтарады
-
x not in s: Егер x элементі s жиынында болмаса, True қайтарады
-
s. issubset(t): Егер t құрамында s жиынтығы болса, True қайтарады
-
s. issuperset(t): Егер t жиыны s жиынында болса, True қайтарады
-
s.union(t): s және t жиындарын біріктіруін қайтарады
-
s.intersection(t): s және t жиындарының қиылысын қайтарады
-
s.difference(t): s және t жиындарының айырмасын қайтарады
-
s.copy(): s жиынының көшірмесін қайтарады
5 бөлім. Жолдар
Жолдармен жұмыс
Жол Unicode кодын қолданатын таңбалар тізбегінен тұратын таңбалар тізімі болып табылады. Біз квадрат жақшадағы индекс бойынша жолдың жеке таңбаларына қатынай аламыз:
|
1 2 3 4 5 6 7 8 |
string = "hello world" c0 = string[0] # h print(c0) c6 = string[6] # w print(c6)
c11 = string[11] # IndexError қателігі: string index out of range print(c11) |
Индекстеу нөлден басталады, сондықтан жолдың бірінші таңбасында 0 индексі болады. Егер Біз жолда жоқ индекске жүгінуге тырыссақ, онда IndexError ерекшелігі пайда болады. Мысалы, жоғарыдағы жағдайда жолдың ұзындығы 11 таңбадан тұрады, сондықтан оның таңбаларында 0-ден 10-ға дейінгі индекстер болады.
Жолдың соңынан бастап таңбаларға қол жеткізу үшін теріс индекстерді қолдануға болады. Сонымен, -1 индексі соңғы таңбаны, ал -2 - соңғы таңба алдындағы таңбаны және т. б. білдіреді:
|
1 2 3 4 5 |
string = "hello world" c1 = string[-1] # d print(c1) c5 = string[-5] # w print(c5) |
Таңбалармен жұмыс жасау кезінде жолдың өзгермейтін мәлімет типі екенін ескеру керек, сондықтан, егер біз жолдың жеке таңбасын өзгертуге тырыссақ, онда келесі жағдайдағыдай қате пайда болады:
|
1 2 |
string = "hello world" string[1] = "R" |
Біз жолдың мәнін оған басқа мән беру арқылы толығымен қайта өзгерте аламыз.
Ішкі жолды алу
Қажет болса, біз жолдан жеке таңбаларды ғана емес, сонымен қатар ішкі жолды да(бірнеше таңбалар тізімі) ала аламыз. Ол үшін келесі синтаксис қолданылады:
-
string[:end]: таңбалар тізбегі 0-ші индекстен бастап end индексіне дейін алынады
-
string[start:end]: таңбалар тізбегі start индексінен бастап end индексіне дейін алынады
-
string[start:end:step]: start индексінен бастап step қадамы арқылы end индексіне дейінгі таңбалар тізбегі алынады
Біз ішкі жолды алудың барлық нұсқаларын қолданып көрейік:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
string = "hello world"
# 0-ден 5-ші символға дейін sub_string1 = string[:5] print(sub_string1) # hello
# 2-ші символдан бастап 5-ші символға дейін sub_string2 = string[2:5] print(sub_string2) # llo
# 2-ден 9-шы символға дейін 2 қадаммен sub_string3 = string[2:9:2] print(sub_string3) # lowr |
Ord және len функциялары
Жол таңбалары Unicode кодын қолданғандықтан, біз ord() функциясының көмегімен, таңбаның сандық мәнін ала аламыз:
|
1 |
print(ord("A")) # 65 |
Жолдың ұзындығын алу үшін len() функциясын қолдануға болады:
|
1 2 3 |
string = "hello world" length = len(string) print(length) # 11 |
Жолда іздеу
Term in string өрнегін қолдана отырып, string жолынан term ішкі жолын табуға болады. Егер ішкі жол табылса, онда өрнек ақиқат мәнін қайтарады, әйтпесе жалған мән қайтарылады:
|
1 2 3 4 5 6 |
string = "hello world" exist = "hello" in string print(exist) # True
exist = "sword" in string print(exist) # False |
Жолды санау
For циклінің көмегімен сіз жолдың барлық таңбаларына қатынай аласыз:
|
1 2 3 |
string = "hello world" for char in string: print(char) |
Негізгі жол әдістері
Қосымшаларда қолдануға болатын жолдардың негізгі әдістерін қарастырайық:
-
isalpha (): егер жол тек алфавиттік таңбалардан тұрса, True қайтарады
-
islower(): егер жол тек кіші әріптегі таңбалардан тұрса, True қайтарады
-
isupper(): егер барлық жол таңбалары жоғарғы регистрде болса, True қайтарады
-
isdigit(): егер жолдың барлық таңбалары сандар болса, True қайтарады
-
isnumeric(): егер жол сан болса, True қайтарады
-
startswith(str): егер жол strr ішкі жолынан басталса, True қайтарады
-
endswith(str): егер жол strr ішкі жолында аяқталса, True қайтарады
-
lower(): жолды төменгі регистрге аударады
-
upper(): жолды жоғарғы регистрге аударады
-
title(): жолдағы барлық сөздердің бастапқы таңбалары жоғарғы регистрге аударылады
-
capitalize(): жолдың бірінші сөзінің бірінші әрпін жоғарғы регистрге аударады
-
lstrip(): жолдан бастапқы бос орындарды жояды
-
rstrip(): жолдан соңғы бос орындарды жояды
-
strip(): жолдан бастапқы және соңғы бос орындарды жояды
-
ljust(width): егер жолдың ұзындығы width параметрінен аз болса, онда жолдың оң жағындағы бос орындар width мәнін қосу үшін қосылады, ал жолдың өзі сол жаққа тураланады
-
rjust(width): егер жолдың ұзындығы width параметрінен аз болса, онда жолдың сол жағына бос орындар қосылады, ал жолдың өзі оң жаққа тураланады
-
center(width): егер жолдың ұзындығы width параметрінен аз болса, онда жолдың сол және оң жағында бос орындар width мәнін толықтыру үшін біркелкі қосылады, ал жолдың өзі ортаға тураланады
-
find(str[, start[, end]): жолдағы ішкі жол индексін қайтарады. Егер ішкі жол табылмаса, -1 саны қайтарылады
-
replace(old, new [, num]): жолдағы бір ішкі жолды екіншісіне ауыстырады
-
split([delimeter [, num]]): бөлгішке байланысты жолды ішкі жолдарға бөледі
-
join(strs): жолдарды бір жолға біріктіріп, олардың арасына белгілі бір бөлгішті орналастыруға болады
Мысалы, егер біз пернетақтадан санды енгізуді күтетін болсақ, онда енгізілген жолды санға түрлендірмес бұрын, isnumeric() әдісін қолдана отырып, нақты сан енгізілгенін тексеруге болады, егер солай болса, онда түрлендіру әрекетін орындауға болады деген сөз:
|
1 2 3 4 |
string = input("Сан енгізіңіз: ") if string.isnumeric(): number = int(string) print(number) |
Жол, белгілі бір ішкі жолдан басталуын тексереді:
|
1 2 3 4 |
file_name = "hello.py"
starts_with_hello = file_name.startswith("hello") # True ends_with_exe = file_name.endswith("exe") # False |
Жолдың басында және соңында бос орындарды жою:
|
1 2 3 |
string = " hello world! " string = string.strip() print(string) # hello world! |
Жолды бос орындармен толықтыру және туралау:
|
1 2 |
print("iPhone 7:", "52000".rjust(10)) print("Huawei P10:", "36000".rjust(10)) |
Консольге шығару:
iPhone 7: 52000
Huawei P10: 36000
Жолда іздеу
Python-да жолдағы ішкі жолды іздеу үшін find() әдісі қолданылады, ол жолға бірінші ішкі жолдың кіру индексін қайтарады және оның үш формасы бар:
-
find(str): str ішкі жолын іздеу жолдың басынан аяғына дейін жүзеге асырылады
-
find(str, start): start параметрі іздеу жүргізілетін бастапқы индексті анықтайды
-
find(str, start, end): end параметрі іздеу жүретін соңғы индексті анықтайды
Егер ішкі жол табылмаса, әдіс -1 қайтарады:
|
1 2 3 4 5 6 7 8 9 10 11 |
welcome = "Hello world! Goodbye world!" index = welcome.find("wor") print(index) # 6
# 10 индекстен бастап іздеу index = welcome.find("wor",10) print(index) # 21
# 10 мен 15 индекс аралығында іздеу index = welcome.find("wor",10,15) print(index) # -1 |
Жолда ауыстыру
Бір ішкі жолды екіншісіне ауыстыру үшін replace() әдісі қолданылады:
-
replace(old, new): old ішкі жолын жаңасына ауыстырады
-
replace(old, new, num): num параметрі old ішкі жолының қанша кездесуін жаңасына ауыстыру керектігін көрсетеді
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
phone = "+1-234-567-89-10"
# сызықшаларды бос орынға ауыстыру edited_phone = phone.replace("-", " ") print(edited_phone) # +1 234 567 89 10
# сызықшаларды жою edited_phone = phone.replace("-", "") print(edited_phone) # +12345678910
# бірінші сызықшаны ғана ауыстыру edited_phone = phone.replace("-", "", 1) print(edited_phone) # +1234-567-89-10 |
Ішкі жолдарға бөлу
Split () әдісі бөлгішке байланысты жолды ішкі жолдар тізіміне бөледі. Бөлгіш кез-келген таңба немесе таңбалар тізбегі бола алады. Бұл әдіс келесі формалары бар:
-
split(): бөлгіш ретінде бос орын қолданылады;
-
split(delimeter): бөлгіш ретінде delimeter қолданылады
-
split(delimeter, num): num параметрі, неше рет бөлу керектігін көрсетеді көрсетеді. Жолдың қалған бөлігі тізімге, ішкі жолдарға бөлінбестен, қосылады
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
text = "Это был огромный, в два обхвата дуб, с обломанными ветвями и с обломанной корой" # бос орын бойынша бөлу splitted_text = text.split() print(splitted_text) print(splitted_text[6]) # дуб,
# үтір бойынша бөлу splitted_text = text.split(",") print(splitted_text) print(splitted_text[1]) # в два обхвата дуб
# бірінші 5 бос орындар бойынша бөлу, қалған бөлігі консольға шығарылған splitted_text = text.split(" ", 5) print(splitted_text) print(splitted_text[5]) # обхвата дуб, с обломанными ветвями и с обломанной корой |
Жолдарды біріктіру
Жолдармен қарапайым операцияларды қарастырған кезде, қосу амалын қолдана отырып, жолдарды қалай біріктіру керектігі көрсетілді. Жолдарды қосудың тағы бір мүмкіндігі - join() әдісі: ол жолдар тізімін біріктіреді. Сонымен қатар, осы әдіс шақырылған ағымдағы жол бөлгіш ретінде қолданылатынын ескерген жөн, мысалы:
|
1 2 3 4 5 6 7 8 9 |
words = ["Let", "me", "speak", "from", "my", "heart", "in", "English"]
# бөлгіш – бос орын sentence = " ".join(words) print(sentence) # Let me speak from my heart in English
# бөлгіш – тәк сызықша sentence = " | ".join(words) print(sentence) # Let | me | speak | from | my | heart | in | English |
Join әдісіне тізімнің орнына қарапайым жолды беруге болады, бұл жағдайда бөлгіш осы жолдың таңбалары арасында енгізіледі:
|
1 2 3 |
word = "hello" joined_word = "|".join(word) print(joined_word) # h|e|l|l|o |
Жолдарды форматтау
Жолдарда анықталған format() әдісі, белгілі бір мәндерді арнайы белгілердің(placeholder) орнына қою арқылы, жолды форматтауға, яғни қажетімізге байланысты өзгертуге мүмкіндік береді.
Жолға мәндерді кірістіру үшін фигуралық жақшалармен ({}) жиектелген, арнайы параметрлер қолданылады.
Аталған параметрлер
Форматталатын жолда параметрлерді анықтап, format() әдісінде осы параметрлер үшін мәндерді бере аламыз:
|
1 2 3 4 5 |
text = "Hello, {first_name}.".format(first_name="Tom") print(text) # Hello, Tom.
info = "Name: {name}\t Age: {age}".format(name="Bob", age=23) print(info) # Name: Bob Age: 23 |
Сонымен қатар, әдіске сәйкес, аргументтер жолдағы параметрлермен бірдей атпен анықталады. Сонымен, егер параметр бірінші жағдайдағыдай first_name деп аталса, онда мән берілген аргумент те first_name деп аталады.
Позиция бойынша параметрлер
Сондай-ақ, біз format әдісіне аргументтер жиынтығын бере аламыз, ал форматталатын жолда бұл аргументтерді, олардың нөмірін көрсете отырып енгізе аламыз (нөмірлеу нөлден басталады):
|
1 2 |
info = "Name: {0}\t Age: {1}".format("Bob", 23) print(info) # Name: Bob Age: 23 |
Бұл жағдайда аргументтерді жолға бірнеше рет енгізуге болады:
|
1 |
text = "Hello, {0} {0} {0}.".format("Tom") |
Ауыстырулар
Пішімделген мәндерді жолға берудің тағы бір тәсілі - белгілі бір мәндер енгізілген алмастырғыштарды немесе арнайы шаблондарды placeholder () пайдалану. Форматтау үшін келесі шаблондарды пайдалануға болады:
-
s: жолдарды енгізу үшін
-
d: бүтін сандарды енгізу үшін
-
f: бөлшек сандарды енгізу үшін. Бұл түр үшін бөлшек бөлігіндегі белгілердің санын нүкте арқылы да анықтауға болады.
-
%: мәнді 100-ге көбейтеді және пайыз белгісін қосады
-
e: санды экспоненциалды жазбадағы көрсетеді
Плейсхолдердің жалпы синтаксисі келесідей:
|
1 |
{:плейсхолдер} |
Плейсхолдерге байланысты қосымша параметрлерді қосуға болады. Мысалы, float сандарын форматтау үшін келесі параметрлерді пайдалануға болады
|
1 |
{:[таңбалар саны][үтір][.бөлшек бөліктегі таңбалар саны] плейсхолдер} |
Format әдісін шақырған кезде, оған дәлелдер ретінде плейсхолдердің орнына енгізілген мәндер беріледі:
|
1 2 3 4 |
welcome = "Hello {:s}" name = "Tom" formatted_welcome = welcome.format(name) print(formatted_welcome) # Hello Tom |
Нәтиже ретінде format() әдісі жаңа форматталған жолды қайтарады.
Бүтін сандарды пішімдеу:
|
1 2 3 4 |
source = "{:d} таңба" number = 5 target = source.format(number) print(target) # 5 таңба |
Егер пішімделетін сан 999-дан үлкен болса, онда біз ойнатқыштың анықтамасында үтірді разрядты бөлгіш ретінде қолданғымыз келетінін көрсете аламыз:
|
1 2 |
source = "{:,d} таңбалар" print(source.format(5000)) # 5,000 таңбалар |
Бөлшек сандар үшін, яғни float типін білдіретін сандар үшін, плейсхолдер кодының алдында нүктеден кейін, бөлшек бөлігінде, қанша таңба шығарғымыз келетінін көрсетуге болады:
|
1 2 3 4 5 |
number = 23.8589578 print("{:.2f}".format(number)) # 23.86 print("{:.3f}".format(number)) # 23.859 print("{:.4f}".format(number)) # 23.8590 print("{:,.2f}".format(10001.23554)) # 10,001.24 |
Тағы бір параметр таңбалардағы форматталатын мәннің ең аз енін орнатуға мүмкіндік береді:
|
1 2 |
print("{:10.2f}".format(23.8589578)) # 23.86 print("{:8d}".format(25)) # 25 |
Пайыздарды шығару үшін "%" кодын қолданған дұрыс:
|
1 2 3 4 |
number = .12345 print("{:%}".format(number)) # 12.345000% print("{:.0%}".format(number)) # 12% print("{:.1%}".format(number)) # 12.3% |
Экспоненциалды жазбада санды шығару үшін "e" плейсхолдері қолданылады":
|
1 2 3 4 |
number = 12345.6789 print("{:e}".format(number)) # 1.234568e+04 print("{:.0e}".format(number)) # 1e+04 print("{:.1e}".format(number)) # 1.2e+04 |
Format әдісісіз пішімдеу
Негізінде, мәндерді форматтау үшін біз, format әдісін қолданбай, келесі синтаксисті қолдана отырып, жасай аламыз:
|
1 |
жол%(параметр1, параметр2,..параметрN) |
Яғни, басында жоғарыда қарастырғандай, сол пейсхолдерлері бар жол бар (%плейсхолдерін санамағанда), жолдан кейін % пайыздық белгі қойылады, содан кейін жолға енгізілген мәндер тізімі беріледі. Шын мәнінде, пайыздық белгі жаңа жол пайда болатын операцияны білдіреді:
|
1 2 |
info = "Есімі: %s \t Жасы: %d" % ("Tom", 35) print(info) # Есімі: Tom Жасы: 35 |
Плейсхолдердің жанында пайыздық белгі көрсетіледі және FORMAT функциясынан айырмашылығы, фигуралық жақшалар қажет емес.
Сонымен қатар, мұнда сандарды форматтау әдістері де қолданылады:
|
1 2 |
number = 23.8589578 print("%0.2f - %e" % (number, number)) # 23.86 - 2.385896e+01 |
Сөздерді санау бағдарламасы
Сөздерді санау бағдарламасы мысалымен жолдармен жұмыс әстейтін амалдар мен әдістерді қарастырайық.
Бағдарламаның барлық коды келесідей болады:
Мұнда get_words() функциясында мәтінді сөздерге бөлу, яғни сегментациясы жасалады. Сонымен қатар, бұл функция барлық пунктуациялық белгілер жойады, ал келесі жолға ауыстыру таңбаларын бос орындарға ауыстырылады. Содан кейін мәтін сөздерге бөлінеді. Бөлгіш ретінде, келісім бойынша, бос орын қолданылады.
Әрі қарай, get_words_dict() функциясында біз сөздерден сөздік аламыз, мұнда кілт - ерекше сөз, ал мағынасы - осы сөздің мәтіндегі пайда болу саны.
Негізгі функция файлдың жолы мен атын енгізуді ұйымдастырып, бжоғарыдағы функцияларды шақырып, барлық статистиканы шығарады.
Бағдарламаның консольге шығарған нәтижесі, мәтін ретінде Абайдың 1-ші қара сөзі мәтіні алынды:
Файлдың жолы мен атын енгізіңіз: c:\1\Text.txt
Сөздер саны: 266
Қайталанбайтын сөздер: 204
Барлық сөздер:
- 2
адам 1
аз 1
азығын 1
айтыстық 1
ал 1
албыртқан 1
алмадым 1
.....
ЕСКЕРТПЕ ҮШІН
шағым қалдыра аласыз













