Бірнеше арнайы жағдайлар бар. Олар:
Кейбір жағдайда бірнеше инструкцияны бір жолға нүктелі үтір арқылы жазуға болады:
a = 1; b = 2; print(a, b)
Сурет 14 Бірнеше инструкцияны бір жолға жазу
Бұндайды көп қолдануға болмайды, әрқашан да оқылым туралы есте сақтау керек.
Бір инструкцияны бірнеше жолға да бөліп жазуға болады. Ол үшін бірнеше доғал, квардатты немесе жүйелі жақшаны қолдану керек.
if (a == 1 and b == 2 and
c == 3 and d == 4): # Не забываем про двоеточие
print('spam' * 3)
Сурет 15 Бір инструкцияны бірнеше жолға бөліп жазу коды
Құрамдас интсрукцияның денесі сол негізгі дененің жазылған жолына орналасуы мүмкін, егер негізгі инструкцияның денесі құрамдас денені қамтымаса. Мысалы:
if x > y: print(x)
Сурет 16 Құрамдас және негізгі инчтрукцияның денесінің бір жолға жазылуы
Бағдарламалау тілінің толық синтаксисін түсіну үшін көптеген мысалдарды қарастыру керек. Бірнеше есептердің шығарылуын қарастырып барып түсінуге болады.
Дәріс №2
Дәріс тақырыбы: Негізгі Стандартты Python модульдері.
Дәрістің мақсаты: Негізгі Стандартты Python модульдерін қарастыру.
Тақырып бойынша қарастырылатын сұрақтар:
Модуль түсінігі.
Стандартты кітапхананың модульдерін зерттеуге кіріспес бұрын, Python-да модуль деп аталады.
Модульдік тәсілге сәйкес бағдарламалау үлкен міндет бірнеше ұсақ болып бөлінеді, олардың әрқайсысын (Идеалда) жеке модуль шешеді. Әр түрлі әдістемелерде модуль өлшеміне әртүрлі шектеулер беріледі, алайда бағдарламаның модульдік құрылымын құру кезінде модульдердің композициясын құру маңызды, ол олардың арасындағы байланысты барынша азайтуға мүмкіндік береді. Өз элементтері арасында көптеген байланыстары бар сыныптар мен функциялар жиынтығы бір модульде қисынды орналастыру болар еді. Тағы бір пайдалы ескерту бар: модульдерді қайта жазудан гөрі пайдалану оңай болуы керек. Бұл дегеніміз, модуль ыңғайлы интерфейс болуы керек: функциялар жиынтығы, сыныптар және тұрақты, ол өз пайдаланушыларына ұсынады.
Python тілінде бір мәселеге арналған модульдер жиынтығын пакетке қоюға болады. Мұндай пакеттің жақсы мысалы-XML пакеті, онда XML өңдеудің әр түрлі аспектілеріне арналған модульдер жинақталған.
Python бағдарламасында модуль Модуль-нысан-модуль, Оның атрибуттары модульде анықталған атаулар болып табылады:
>>> import datetime
>>> d1 = datetime.date(2004, 11, 20)
Бұл мысалда datetime модулі импортталады. Import операторының жұмысы нәтижесінде ағымдағы атау кеңістігінде datetime атымен объект пайда болады.
Python тіліндегі бағдарламаларда қолдану үшін модульдер өзінің шығу тегі бойынша кәдімгі (Python-да жазылған) және басқа бағдарламалау тілінде жазылған кеңейту модульдеріне (әдетте C-да) бөлінеді. Пайдаланушы тұрғысынан олар жылдам әрекетпен ерекшеленуі мүмкін. Стандартты кітапханада модульдің екі нұсқасы бар: Python және C.бұл, мысалы, pickle және cPickle модульдері. Әдетте Python модульдері кеңейту модулдеріне қарағанда икемді.
Python модульдері
Модуль бастапқы коды бар жеке файл түрінде ресімделеді. Стандартты Модульдер тілдің тиісті интерпретаторын таба алатын каталогта болады. Python модульдерді іздейтін каталогтарға жолды sys айнымалысы мәнінен көруге болады.path:
>>> sys.path
['', '/usr/local/lib/python23.zip', '/usr/local/lib/python2.3',
'/usr/local/lib/python2.3/plat-linux2', '/usr/local/lib/python2.3/lib-tk',
'/usr/local/lib/python2.3/lib-dynload',
'/usr/local/lib/python2.3/site-packages']
Соңғы Python нұсқаларында модульдерді жинақы сақтау үшін zip-мұрағатына (Java-дағы jar-мұрағаттарға ұқсас) орналастыруға болады.
Модульдерді іздеу бағдарламасын іске қосқан кезде, ағымдағы каталогта жүреді. (Стандартты немесе қосымша орнатылған модульдермен аттар қақтығысы болмас үшін өз модульдерін Мұқият атауыңыз керек.)
Python бағдарламасына модульді қосу import операторының көмегімен жүзеге асырылады . Оның екі нысаны бар : import және from-import:
import os
import pre as re
from sys import argv, environ
from string import *
Бірінші пішін көмегімен ағымдағы көріну аймағымен тек модуль объектісіне сілтеме жасайтын атау ғана байланысады, ал екіншісін пайдаланған кезде модуль объектілерінің көрсетілген аттары (немесе қолданылса, барлық аттары * ) ағымдағы көріну аймағымен байланысады. Импорттау кезінде, as арқылы элементтің атын өзгертуге болады. Бірінші жағдайда модуль атаулары кеңістігі бөлек атауда қалады және модульден нақты атауына кіру үшін нүктені қолдану қажет. Екінші жағдайда аттар ағымдағы модульде анықталғандай қолданылады:
os.system("dir")
digits = re.compile("\d+")
print argv[0], environ
Модульді қайта импорттау әлдеқайда жылдам жүреді , себебі Модульдер интерпретатормен кэштеледі. Жүктелген модульді reload функциясы арқылы тағы да жүктеуге болады (мысалы, модуль дискіде өзгерсе)():
import mymodule
. . .
reload(mymodule)
Бірақ бұл жағдайда модульдің ескі нұсқасынан сыныптардың даналары болып табылатын барлық объектілер өз мінез-құлқын өзгертпейді.
Модульдермен жұмыс істеу кезінде басқа да қырлары бар . Мысалы, модульді импорттау процесін қайта анықтауға болады. Бұл туралы толығырақ түпнұсқа құжаттамадан білуге болады.
Дәріс №3
Дәріс тақырыбы: Python тіліндегі жолдар.
Дәрістің мақсаты: Python тіліндегі жолдар қарастыру.
Тақырып бойынша қарастырылатын сұрақтар:
Python тіліндегі жолдар
Жолдар. Жолдағы бос орындарды немесе бірнеше бос орындарды «*» таңбасымен алмастыруды қарастырайық.
Бұндай есепті шығару үшін бірінші алгоритмін құрып алу керек. Егер жолда бірнеше бос орын кездессе оны бір «*» таңбасымен алмастырып, ал жолдың басы мен соңындағы бос орындарды ою керек.
Есепті шығару алгоритмі:
Жолды басынан бастап әр таңбасын қарап шығу. Бірінші тұрған бос орындық емес таңбаның нөмірін есте сақтау қажет. Жолдың босорындық емес бірінші таңбасынан соңына дейін бір бөлікті алу.
Жолды соңынан бастап қарап шығу. Жолдың соңынан бастағандағы босорындық емес таңбаның нөмірін есте сақтау. Жолдың басынан бастап соңынан санағандағы бірінші босорындық емес таңбаға дейінгі жолдың бір бөлігін алу.
Жаңа жолға ескі жолдың бірінші таңбасын меншіктеу (ол барлық жағдайда бос орын емес).
Ескі жолдың әр таңбасын қарап шығу. Егер келесі таңба бос орын болмаса, онда жаңа жолды осы таңбаны қосу арқылы форматтау керек. elif бұтасына бос орын таңбалары орналасады, бірақ бұл кезде бұрынғы таңба бос орынға тең болды ма сол тексеріледі. Егер олай болмаса, онда тек қана сонда жаң жолға "*" қосылады. Артық бос орындар жаңа жолға қосылмай алып тасталады.
Мысалы:
s = input()
i = 0
while s[i] == ' ': i+=1
s = s[i:]
i = len(s)
while s[i-1] == ' ': i-=1
s = s[:i]
s1 = s[0]
i = 1
while i < len(s):
if s[i] != ' ':
s1 += s[i]
elif s[i-1] != ' ':
s1 += '*'
i += 1
print(s1+'!')
Скриптің орындалу мысалы:
one two three four f*ve six seven
one*two*three*four*f*ve*six*seven!
Бірақ Python бағдарламалау тілінде жолды тізімге айналдыру арқылы есепті шешу немесе тұрақты өрнектер арқылы шығару оңайға түседі.
Бұндағы split() әдісі арқылы жолдар бос орындар бойынша сөздерге бөлінеді. Бұл жерде олардың саны маңызды емес. Ары қарай тек сөздерді қайта жолға "*" таңбасы арқылы жинақтау қалады:
s = input()
l = s.split()
s1 = ''
for i in l:
s1 += i + '*'
s1 = s1[:-1] # соңғысын жоямыз "*"
print(s1)
Жолдардан санды таңдап алу. Натурал сандар мен сөздерден тұратын жолдар берілген. Бұл жолдардағы сандардан тізім құрау керек. Ол үшін жолдарды әрбір таңбасы бойынша қарап шығу керек. Егер келесі таңба сан болса оны жаңа жолға қосу керек. Ары қарай одан кейінгі таңбаларды қарап шығу керек. Егер олар да сандар болса, оларды да жолдың соңына тіркеп отыру қажет. Келесі таңба сан емес болып шыққан жағдайда немесе жолдың соңына жетсек цифрларландан тұрған жолды сандарға айналдырып тізімне қосу керек.
Осы бағдарламаның листингі келесі суретте бейнеленген:
s = input()
l = len(s)
integ = []
i = 0
while i < l:
s_int = ''
a = s[i]
while '0' <= a <= '9':
s_int += a
i += 1
if i < l:
a = s[i]
else:
break
i += 1
if s_int != '':
integ.append(int(s_int))
print(integ)
5 dkfj78df 9 8 dkfj8
Жауабы: [5, 78, 9, 8, 8]
|
Сурет 17 Жолдардан санды таңдап алу бағдарламасының листингі
Нөмірі бойынша сөзді табу. Мәтіннен арнайы нөмірі бойынша сөзді табу (мысалы, реттік нөмірі бесінші сөзді табу). Экранға ол сөздің бірінші әрпін шығару керек.
Сөзді санау үшін төмендегі программада count айнымалысы қолданылады, ал f – біздің сол сөзде тұрымыз ба, әлде келесі жаң сөз басталып кетті ме соны анықтайды.
Егер жаңа сөз басталса, сөздер есептегіші арта түседі, ал егер есептегіш ізделінудегі сөздің нөміріне тең болса цикл аяқталады.
s = input()
l = len(s)
n = int(input("Номер слова: "))
count = 0
f = 0
i = 0
while i < l:
if s[i] != ' ' and f == 0:
count += 1
f = 1
if count == n:
break
elif s[i] == ' ':
f = 0
i += 1
print(s[i])
Кодтың орындалу мысалы:
Келесі мәндер енгізіледі: один два три четы пять шесть
Сөздің нөмірі: 4
Жауабы: ч
Алайда бұл есепті Python тілінің көмегімен шығару әлдеқайда ауқымды емес, яғни төмендегі кестеде көрсетілгендей жазып шығуға болады.
Кесте 1
Python тіліндегі есептің қысқаша жазылу кестесі
s = input()
l = len(s)
n = int(input("Номер слова: "))
s = s.split()
print(s[n][0])
|
Бұндағы split() әдісі аргументсіз болған жағдайда, жолды бос орындары бойынша сөздерге бөледі. s[n][0] өрнегі тізімнен n- элементті алып тастап, содан соң жолдан бірінші таңбаны алады.
Дәріс №4
Дәріс тақырыбы: Python тіліндегі сандар.
Дәрістің мақсаты: Python тіліндегі сандар түрлерін қарастыру.
Тақырып бойынша қарастырылатын сұрақтар:
1. Python тіліндегі сандар.
1. Python тіліндегі сандар.
Python тілінде сандар келесі түрлері бар: бүтін, нақты, комплексті. Бүтін сандар (int). Python тіліндегі сандардың қарапайым сандардан еш айырмашылығы жоқ. Олар қарапайым математикалық операцияларды қолдайды және 5-кестеде көрсетілген.
Кесте 2
Математикалық операциялар
x + y
|
Қосу
|
x – y
|
Айырма
|
x * y
|
Көбейту
|
x / y
|
Бөлу
|
x // y
|
Бөлгендегі бүтін бөлік
|
2-кестенің жалғасы
x % y
|
Бөлгендегі қалдық
|
-x
|
Санның белгісін ауыстыру
|
abs(x)
|
Сан модулі
|
divmod(x, y)
|
(x // y, x % y) жұп
|
x ** y
|
Дәрежеге шығару
|
pow(x, y[, z])
|
xy модулі бойынша (егер модулі берілсе)
|
Тағы бір айта кететіні, Python тіліндегі бүтін сандар, басқа бағдарламалау тілдеріне қарағанда ұзақ арифметиканы қолдайды (бірақ ол жадыдан көп орын талап етеді). Мысалы келесі 22-суретте бағдарламаның бөлігінің листингі көрсетілген.
Достарыңызбен бөлісу: |