© 2024, id53428015 1248 5
СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ
Благодаря готовым учебным материалам для работы в классе и дистанционно
Скидки до 50 % на комплекты
только до
Готовые ключевые этапы урока всегда будут у вас под рукой
Организационный момент
Проверка знаний
Объяснение материала
Закрепление изученного
Итоги урока
Атахожаев З.Х
Python программалоо тили боюнча мектеп окуучулары үчүн окуу колдонмосу
Кыргызстан 2021
Бул окуу колдонмо орто мектеп окуучуларына Python программалоо тилинин башталгыч бөлүгүн үйрөтүү үчүн колдонулат. Python программалоо тилинин негиздөөчүсү Guido van Rossum болуп , ал 1956-жылдын 31-январында Нидерландияда туулган. Азыркы убакытта ал Сан Францизкодогу Dropbox Ln компаниясында иштейт. Дүйнөгө белгилүү болгон Google, WatsApp... тарга окшогон программалардын негизги бөлүгө Python до түзүлгөн.
Dear children of Kyrgyzstan.
I am delighted that you are learning Python with this book. I encourage you to study hard and have fun while studying. I hope that you become good programmers by studying Python!
My highest regards,
--Guido van Rossum
Урматтуу Кыргызстандык балдарым.
Мен сиздердин бул китептен Python ду үйрөнүп жатканыңардан аябай кубанычтамын. Мен сиздерди окуу мезгилинде катуу изилденип, өз эмгегиңерден ыраакат алууңузга чакырамын. Python ду үйрөнүп, жакшы программисттер болуп жетишесиңер деген ишеничтемин!
Сиздерге Урмат менен,
Python программалоо тилинин негизчиси.
--Guido van Rossum.
Python (IPA менен: Python аталышы жайылган) - иштеп чыгуучунун өндүрүмдүүлүгүнө жана коддун окумдуу болушуна багытталган жогорку даражалуу, жалпы милдеттерди аткарууга арналган программалоо тили. Python өзөгүнүн синтаксиси - минималдаштырылган. Ошол эле учурда, стандарттуу китепканасы көптөгөн пайдалуу функцияларды камтыйт.
Python бир нече программалоо парадигмаларын колдойт. Алардын ичинде структуралык, функционалдык, императивдик, объектиге жана аспектиге багытталган парадигмалар да бар. Негизги архитектуралык өзгөчөлүктөрү - динамикалык типтештирүү, автоматтык эс башкаруу, толук интроспекция, бөтөнчөлүктөрдү иштетүү механизми, көп агымдык эсептөөнү колдоо жана жогорку даражалуу маалымат структуралары. Python'до коддор модул болуп бириге алчу иш-милдеттер жана класстар болуп уюшулат. (модулдар өз кезегинде пакет болуп бириге алышат).
Python'дун үлгүлүү колдонулушу - жигердүү колдонулган көпчүлүк платформаларга шайкеш келген CPython интерпретатор болуп саналат. Бул проприетардык жана башка бардык колдонмолордо колдонууга жол берген Python Software Foundation эркин лицензиясы менен тарайт. JVM (компиляция мүмкүндүгү менен), MSIL (компиляция мүмкүндүгү менен), LLVM ж.б. үчүн сунушталган чечмелөөчүлөр бар. PyPy долбоору Python'ду JIT-компиляция менен ишке ашырууну сунуш кылат. Мында Python-программаларды аткаруунун ылдамдыгы кыйла жогорулайт.
Python - жигердүү өнүгүп жаткан (тилдик өзгөчөлүктөрүн кошуп/өзгөртүп турган) программалоо тили. Жаңы версиялары болжол менен эки жарым жылда бир чыгып турат.
Wikipedia дан алынды
Эмне үчүн Python программалоо тилин үйрөнөбүз?
Бул китеп орто мектеп окуучулары үчүн багытталган болуп, негизинен Python программалоо тилинде башталгыч алгоритмдер менен иштөөнү үйрөтөт. Кийинки убакыттарда мамлекетибиздин экономикасын өнүктүрүү максатында программа түзүүнү биле турган же программаларды кайра жасоону биле турган кесип ээлерине талап көбөйүүдө. Демек, жаштарыбызда кайсы программалоо тилин үйрөнүү керек деген суроо пайда болушу мүмкүн. Интернеттен программалоо тилдеринин рейтингдерине көңүл бурабыз. Анда эң алдынкы орундарда Java, C++, C# ,PHP жана албетте Python программалоо тили тургандыгын көрөбүз. Ошондо: Алардан кайсы бири мектеп жашындагы окуучуларыбыздын үйрөнүшү үчүн эң жөнөкөй программалоо тили? деген экинчи суроо пайда болот. Мен Qbasic, Paskal , C++, Java программалоо тилдерин окуучуларга жөнөкөй үйрөтүүнүн методдорун изилдеп чыктым. Бирок ар дайым кандайдыр бир кыйынчылыктарга туш келдим. Мисалы: Сабак сааттарынын аз экендиги, программалоо тилинин мүмкүнчүлүктөрүнүн жетишпестиги, мектеп окуучуларына бул программалоо тилдеринде керектүү коддорду түзүү методдорунун татаалдыгы, алгоритмдерди иштетүүдө окуучулардын үйрөнүшүнө туура келе турган ыкмалардын жетишпестиги жана башка себептер. Бул кыйынчылыктар себептүү мектеп жашындагы окуучуларыбызга программа түзүү өтө татаал ишке окшоп калат.
P
ython программалоо тили болсо окуучуларыбызга жогорудагы кыйынчылыктарды жеңип, программа түзүүчү адистердин жетишип чыгышын ылдамдашырат. Python до керектүү алгоритмдердин програмаларын түзүү башка программалоо тилдерине караганда анча жөнөкөй жана керектүү библиотекалары өтө көп.
Бул китепти иштеп чыгуудан негизги максатыбыз кандай?
Бул окуу колдонмону иштеп чыгуудан максатыбыз, жаштарыбызга дүйнө рейтингинде эң алдынкы саптарда турган Python программалоо тилинин алгачкы баскычтарын сапаттуу үйрөтүү. Кийинчерээк программа түзүүчү кесибине кызыккан окуучуларыбыз жогорку окуу жайларына киргенде өз билимдерин өнүктүрүүсү жеңил болот. Бул колдонмо мамлекетибизге күчтүү программа түзө ала турган жаштарды даярдап чыгуусуна көмөк болушун каалайбыз.
Python га кирүү. 1-сабак.
Python менен иштөө үчүн биринчи аны компьютерге жүктөө зарыл.
Ал үчүн https://www.python.org/downloads/ сайтына кирсек болот. Ал жерден Python программало тилин эң акыркы версиясын компьютерибизге жуктоп алсак болот.
Даяр болгондон соң аны ишке түшүрөбүз.
Алгач монитордо төмөнкү терезе пайда болот.
Бул жердеги белгисинен кийин керектүү тапшырмаларады берип натыйжаны алса болот
Мисалы:
5+3 #кошуу амалы
8
5-3 #кемитүү амалы
2
5*3 #көбөйтүү амалы
15
5**2 #Даражага көтөрүү
25
10/3 #бөлүү амалы
3.3333333333335
10//3 #Бөлүүнүн бүтүн бөлүгүн ажыратуу
3
10%3 #Бөлүүнүнүн калдыктуу бөлүгүн чыгаруу
1
Python до өтө чоң сандар менен да иштөө жөн эле аткарылышы мүмкүн
Мисалы:
3**500 #3 түн 500 чү даражасы
36360291795869936842385267079543319118023385026001623040346035832580600191583895484198508262979388783308179702534403855752855931517013066142992430916562025780021771247847643450125342836565813209972590371590152578728008385990139795377610001
Дагы бир мисал «35 санынын цифраларынын суммасынын тап» деген тапшырма берилсе
35//10+35%10 көрүнүшүндө тапшырма берүү мүмкүн.
Натыйжа болсо
8
Же «123 санынын цифраларынын суммасын тапкыла?» десе
123//100+123%100//10+123%10 көрүнүшүндө жазылат.
Натыйжа болсо
6
Бул жерде операторлор менен да иштөө мүмкүндүгү көрсөтүлгөн.
print(“Salаm aalam”) # Еnter ди басканда жообу чыгат
Salam aalam
Бул жерде print(“ ”) маалыматты чыгаруу оператору . Ал тууралуу кийинки сабактарда көбүрөөк маалыматка ээ болобуз.
Программалар менен иштөө
Python до программа түзүү үчүн төмөнкүчө амалдар аткарылат.
Негизги менюдан file топчусун басылат. Чыккан панелден New file же болбосо ctrl+N топчулору басылат.
Натыйжада жаңы терезе пайда болот.
Ушул терезеке керектүү тапшырмаларды жазып программа түзөбүз
Мисал
Эми бул программага ат берип сактап коёбуз. Ал үчүн
File бөлүмүнө save As… же ctrl+shift+s топчулорун басып керектүү папканын ичине файлга ат коюп сакталат. Кийин F5 топчусун же менюдагы Run бөлүмүндөгү Run Module F5 топчусу басылат.
Натыйжа болсо төмөнкүчө чыгат.
Бул жердеги f=8 алынган керектүү натыйжа болот.
Маалыматтарды чыгаруу оператору
print – маалыматтарды экранга чыгаруу оператору.
Мурунку темаларда көрсөтүлгөн эң кичинекей программаны кайра көрүп чыгабыз.
print(“Salаm aalam”)
Бул жерде ( “ ”) ичинде жазылган сөздөр ошо боюнчо өзртүүлөрсүз жооп экранында чыгат. Ал үчүн жазганыбызды файлда сактайбыз анан F5 топчусун басабыз. Натыйжа:
Salаm aalam
Тырмакча ичиндеги сөздөрдү ажыратып да жазса болот. Натыйжа өзгөрбөйт.
print("Salаm","aalam")
Ал эми сөздөрдү атайын бир өзгөрмөлүү белгилерге бириктирип да натыйжа алса болот. мисалы үчүн.
a="salam "
b="aalam"
c=a+b
print(c)
натыйжа болсо ошондой эле
Salаm aalam
Чыныгы сандар менен иштеп жатканда тырмакчаларды иштетилбейт.
a=4
b=5
c=a+b
print(c)
Натыйжа болсо
9
Эгер сандарды тырмакчаларда жазылса анда алар белгилуу чоңдуктар сыяктуу кошкондо жанында жазылып калат.
a=”4.5”
b=”5.3”
c=a+b
print(c)
Натыйжа болсо
4.55.3 көрүнүшүндө болот.
print операторунун кошумча параметирлери.
\n параметри. Бул буйруктан кийинки белгилүү чоңдуктагы сөздөрдү кийинки сапга өткөрөт.
Мисалы:
print("salаm, men komp\nutermin")
натыйжа:
salаm, men komp
utermin
sep=” ” параметри Белгилүү чоңдуктагы сөздөр арасына жаңы белги кошуу мүмкүн.
Мисалы:
print(1,2,3) # белгилердин арасы ажыралып чыгат.
print(4,5,6,sep="*") # белгилердин арасына (*) белгисин коюп чыгат.
натыйжа
1 2 3
4*5*6
end=” ” параметри. Белгилуу чоңдуктагы сапчанын акырында көрсөтүлгөн белгини кошот жана кийинки сапчаны жанына чакырат.
print(1,2,3,end="--")
print(4,5,6)
натыйжа:
1 2 3--4 5 6
САНДАР ТҮШҮНҮГҮ.
Сандар түшүнүгү деген теманы баштоо үчүн алгач төмөнкү суроолорго жооп берип көрөлү.
1-Кандай сан түрлөрүн билесиңер?
2-Кандай сандар бүтүн сандар , кандай сандар чыныгы сандар деп аталат?
Мисалы:
124 жана 123.5 сандары берилген болсо алардын кайсы бири бутун сан, кайсы бири чыныгы сан?
Бул жерде 124 бутун сан.
123,5 болсо бөлчөк сан.
Анда кайсы бири чыныгы сан?
124 да 123.5 да чыныгы сан.
Pythonдо да бутун сандарды int оператору менен белгилөө мүмкүн.
Бардык чыныгы сандары float оператору менен берилет. Анын ичинде бөлчөк сандар да болот.
Мисалы:
a=10
b=3
c=10/3
print("c=",c)
программасынын натыйжасы
c= 3.3333333333333335
Эгер натыйжанын алдына int оператору жазылса натыйжада сандын бир гана бүтүн бөлүгүн алуу мүмкүн.
a=10
b=3
c=10/3
print("c=",int (c))
программасынын натыйжасы
c= 3
болот.
Python до сандын бүтүн бөлүгүн ажыратып алуу үчүн ( // ) эки бөлүү белгиси менен да аткаруу мумкүн.
Мисалы:
a=10
b=3
c=10//3
print("c=",c)
программасынын натыйжасы
c= 3
болот.
Бирок натыйжага float оператору коюлсо жообу төмөнкүчө болот.
a=10
b=3
c=10//3
print("c=",float(c))
c= 3.0
Str оператору - (string сөзүнүн алгачкы 3 тамгасы) чыныгы сандарды белгилүү чоңдукка айлантырат. Белгилүү чоңдукка айланган сандарды кошкондо удаалаш жазылып калат. Мисалы:
a=str (10.25)
b=str (353.32)
c=a+b
print("c=",c) программанын натыйжасы
c= 10.25353.32 болот. Сандар жөн эле жанында жазылып калды.
Math модулунун библиотекасы.
Программада чыныгы сандар менен иштөөнү жеңилдетүү үчүн Python до көптөгөн функциялар бар. Алар math библиотекасында топтолгон. Бул функцияны ишке киргизүү үчүн программа башында математикалык библиотеканы жуктөө керек болот. Ал үчүн import math деп жазылат. Андан кейин керектуу функциялардын алдына math. деп жазылат.
Мисалы: Берилген бөлчөк санды жогорку тарапка, бутун санга тегеркетоочу ceil операторун ишке киргизүү үчүн math.ceil(x) көрүнүшүндө жазылышы мүмкүн. Х сааны каалагандай сан болуусу мүмкүн.
import math
a = math.ceil(4.2)
b = math.ceil(4.8)
print(a)
print(b)
math модулун ар бир функциянын алдынан жаза бербөө үчүн төмөнкүчө жазуу да мүмкүн:
from math import ceil
a = 7 / 2
b = ceil(a)
print(b)
же болбосо
from math import *
a = 7 / 2
b = ceil(a)
print(b)
(int, round, abs) функциялары стандарттуу эсептегендиги үчүн аларды иштетүүдө math операторун берүү шарт эмес.
Төмөнкүдө math модулун ишке киргизүүнүн негизги функцияларын таблицасы берилген.
|
| Аткара турган иши |
| Тегеректоо | |
| int(x) | Санды нол тарапка бутун санга тегеректейт. Бул стандартту функция болуп анын иштетүү үчүн math модулун жуктөө зарыл эмес. |
| round(x) | Санды эң жакынкы бүтүн санга тегеректейт. |
| round(x, n) | х санынын чекиттен кийинки n белгиге чейин тегеректейт. Бул стандарттуу функция болуп аны иштетүү үчүн math модулун жүктөө зарыл эмес. . |
| floor(x) | Санды төмөнкү жакка тегеректейт. Мисалы: floor(1.5) == 1, floor(-1.5) == -2 |
| ceil(x) | Санды жогоркү жакка тегеректейт. Мисалы: ceil(1.5) == 2, ceil(-1.5) == -1 |
| abs(x) | Абсолюттук чоңдук. Санды модулдан чыгарат. Бул стандартык функция |
| Тамырлар жана логарифмдер. | |
| sqrt(x) | Санды квадраттык тамыр астынан чыгаруу |
| log(x) | Натуралдык логарифм. log(x, b) амалды аткарып жатканда логарифмдин негизи b деп алынат. |
| e | Экспоненциалдык чоңдуктагы сан. e = 2,71828... |
| Тригонометрия | |
| sin(x) | Синус. Бурчтук сандарды радиандарда берет |
| cos(x) | Косинус. Бурчтук сандарды радиандарда берилет |
| tan(x) | Тангенс. Бурчтук сандарды радиандарда берет |
| asin(x) | Арксинус. Сандарды радиандарга өткөрөт. |
| acos(x) | Арккосинус. Сандарды радиандарга өткөрөт. |
| atan(x) | Арктангенс. Сандарды радиандарга өткөрөт. |
| atan2(y, x) | Чекиттин жайгашкан чейрегиндеги ордун (х,у) координаталарында берүү. |
| degrees(x) | Радиандарда берилген бурчтук чоңдуктарды градустарга алмаштырат. |
| radians(x) | Градустарда берилген бурчтук чоңдуктарды радиандарга алмаштырат. |
| pi | π = 3.1415... |
Input оператору.
Input оператору өзгөрүүчү маалыматтарды киргизүү оператору эсептелет. Input башка функциялар менен бирге берилбеген болсо белгилүү чоңдуктарды киргизуу керек болот.
Мисалы:
birinchi_soz=input()
print (birinchi_soz)
F5 топчусун басылса белгисинен кийинки киргизген сөзүбүз print операторунун жардамында экранга чыгат.
Salam duyno
Salam duyno
Белгилүү чоңдуктар кошулса тапшырмалар удалаш болуп чыгышын билебиз. Мисалы:
a=input()
b=input()
c=a+b
print (c) F5 ти басып salаm сөзүн биринчи duyno сөзүн кийин киргизилсе натыйжа төмөндөгүчө болот
salаm
duуno
salаm duyno
Эгерде сандарды киргизилсе натыйжа төмөнкүчө болот
12.35
32.45
12.3532.45
Себеби бул программада берилген сандар белгилүү чоңдуктар түрүндө берилген. Аларды чыныгы сан көрүнүшүндө киргизип математикалык амалдарды аткаруу үчүн операторду int(input()) же float(input()) түрүндө жазабыз . Бул жерде Int бутун сандарды, float чыныгы сандарды киргизүү үчүн колдонулат.
Мисалы:
| a=int(input()) b=int(input()) c=a+b print ("c=",c) F5 ди басса.
5 3 c= 8 | a=float(input()) b=float(input()) c=a+b print ("c=",c) F5 ди басса.
5.2 3.4 c= 8.6 |
Pythonдо өзгөрүүчүлөрдү киргизуу инструкциясына бир убакыттын өзүндө бир канча өзгөрүүчүлөрдү берүү да мүмкүн.
Мисалы:
a, b = 0 , 1
Бул кодду төмөнкүчө жазуу да мүмкүн эле.
a=0
b=1
Маанилерди бир сапта аралыкты пробел менен ажыратып киритүү да мүмкүн. Ал үчүн a,b=map(int,input().split()) көрүнүшүндө жазса болот.
Мисалы:
a,b,с=map(int,input().split())
d=(a+b)/c
print(“d=”,d)
F5
4 6 2 # (4+6) / 2 = 5
d=5
Input операторундагы ( ) дын ичине түшүндүрүүчү сөздөрдү жазуу мүмкүн. Ошол учурда кандай маалымат киргизүү керектиги анык болот.
Мисалы, төмөнкүдөй тапшырма берилген болсун.
h
Үч бурчтуктун негизи жана бийиктиги берилген болсо, анын
аянтын табуучу программаны түз!
a
Бул тапшырмага программа түзүүдөн мурда, алгач геометрия сабагында ошондой тапшырмаларды кантип аткарган экендигибизди эске салабыз. Мисалы:
Берилиши:
негизи = a
бийиктиги = h
аянты s=? Т.к-к
Чыгаруу :
же болбосо , ушул формуланы бир сапта жазса да болот:
s = (a*h) /2
Ал эми ушул көрүнүштү программа кылып жазылса , анда төмөнкүчө болот.
a=float(input("negizin kirit="))
h=float(input("biyiktigin kirit="))
s=(a*h)/2
print ("s=",s)
F5 ти басып, керектүү сандарды киргизебиз жана натыйжа алабыз.
negizini kirit=6
biyiktigin kirit=4
s= 12.0
2-мисал: Өзүңүздүн классыңыздын окуучуларынын сабакка катышкандарынын санынын процентин эсептөөчү программаны түзгүлө?
Бул мисалды иштөө үчүн алгач класстагы жалпы окуучулардын санын киргизебиз, анан келбеген окуучулардын санын киргизилет. Жалпы окуучулардын санынан келбегендердин санын алып салсак келгендердин саны чыгат. Пропорция ыкмасы менен келген окуучулардын пайызын эсептейбиз.
Берилиши:
жалпы окуучу саны
келбегендерин саны
катышуу = ? % т.к-к
Чыгаруу:
Келди = жалпы – келбеди
Катышуу=
Ал эми программасын түзөбүз:
jalpi=int(input("jalpi="))
kelbedi=int(input("kelbedi="))
keldi=jalpi-kelbedi
katishuu=keldi*100/jalpi
print("katishuu=",katishuu,"%")
F5 ти басылса.
jalpi=25
kelbedi=2
katishuu= 92.0 %
Тапшырмалар.
Түстүү төрт бурчтук формасындагы бутаны ок тешип өтүптүр. Эгер бутанын a жана b жактары жана тешиктин r радиусу анык болсо, бутанын тешиктен калган жеринин аянтын табуучу программаны туз!
Биздин классыбызда бардык окуучулардын саны 28. Бүгүн 3 окуучу сабакка келген жок. Мектебибиздин деректору болсо класс жетекчибизден келген окуучулардын класстагы катышуусу канча процентти түзүшүн сурап жатат. Бирок класс жетекчибиз кыргыз тили жана адабияты предметинен сабак берет. Ошондуктан эжекебиз катышууну эсептөөгө кыйналып жатат. Биздин класс жетекчибизге ушул катышууну эсептеп берүүчү программа түзүп бергилечи! Программаңыз ошончолук так болсун, андан башка класс жетекчилер да пайдалана алсын.
Жумушчунун айлык оклад иш акысы жана өкмөттүн кармап калуусу керек болгон пайда салыгы процентинин үлүшү так берилген. Ушул жумушчудан канча салык кармап калынышын жана канча иш акысы колуна тийишин эсептөөчү программаны түзгүлө?
Маалыматтардын көлөмү байттарда берилген болсо, аны килобайт жана мега байттарда сүрөттөңүз!
Саат 0:0:0 дан бери s секунд убакыт өттү. Саат канча болгондугун аныктагыла! Киритүү амалында s берилет. Чыгаруу амалында үч чоңдук берилет саат, минут жана секунддар менен. Убакыттар кийинки күнгө өтүп кетүүсү да мүмкүндүгүн да эсепке алгыла.
Алманбет математика предметин жакшы көрөт. Ал өзүнчө жаңы формулалар чыгарууга аракет жасайт. Бир күнү ал акыры 5 менен бүтүүчү сандардын квадраттарын табуунун бир жолун тапты. Анын айтышынча биринчи бул сандан 5 санын ажыратып алуу керек, анан калган цифрасын өзүнөн 1 ге гана чоң болгон санга көбөйтүү керек. Чыккан сандын артына 25 санын кошуп жазып койсо берилген сандын квадраты чыгат экен. Алманбеттин айтканы боюнча аягы 5 менен бүтүүчү сандын квадыратын табуучу программа түзгүлө?
| Киритуу | чыгуу |
| 25 | 625 |
| 125 | 15625 |
| 345 | 119025 |
If шартты текшерүү оператору
Негизги сөздүктөр.
| if - эгер |
| else –антпесе |
| elif – антпесе эгер |
| and – жана |
| or – же |
| not- эмес |
Бул операторду түшүнүү үчүн төмөндөгү мисалды аткаруучу программа тузуп көрөбүз.
1-тапшырма. Берилген f жана b сандарынын кайсы бири чоң сан экендигин табуучу программаны түз!
Анын программасы төмөнкүчө болот.
a=int(input("1-sandi kirit "))
b=int(input("2-sandi kirit "))
if (ab):
print ("chon san=",a)
elif (a#elif оператору «антпесе эгер» маанисинде келет.
print ("chon san=",b)
else: print ("barabar")
2-тапшырма:
Берилган 3 түрдүү сандардын эң чоңун тапкыла?
a=int(input("1-sandi kirit "))
b=int(input("2-sandi kirit "))
c=int(input("3-sandi kirit "))
max=a
if (max
max=b
elif (max
max=c
print ("max=",max)
Бул мисалды төмөнкүчө оңой чечими да бар
a=int(input("1-sandi kirit "))
b=int(input("2-sandi kirit "))
c=int(input("3-sandi kirit "))
max=max(a,b,c) #кичинесин табуу үчүн min=min(a,b,c)
print ("max=",max) көрүнүшүндө жазса болот.
Демек, аныкталып жаткан мисалдын чечимин табуу үчүн төмөнкү белгилерден пайдалануу мүмкүн.
Кичине - биринчи операнд экинчисинен кичине.
чоң- биринчи операнд экинчисинен чоң.
Кичине же барабар
= чоң же барабар.
== Барабардык. Шарт ар эки тараптын барабардыгын билдирет.
!= барабар эмес.
Мисал: x * x болсо x * x 1000 ден кичине экендигин билдирет .
x != y бул жерде x өзгөрмөсү y га барабар эмес.
Башка программалоо тилдеринен айырмаланган Pythonдо барабардык операндлорун зынжыр ыкмасында аткаруу да мүмкүн
Мисалы: a == b == c же 1 .
Логикалык амалдар.
Учурда бир эмес бир канча шарттарды текшерүү керек болуп калат. Мисалы: Кандайдыр бир санды жуп сан экендигин аныктоо үчүн төмөнкүчө шарттын негизинде аткаруу мүмкүн (n % 2 == 0), же эки бүтүн сан n жана m сандардын жуп сандар экендигин билүү үчүн, ар эки шартты аныктоону аткарылышын эсепке алуу керек: n % 2 == 0 and m % 2 == 0.
Л
огикалык and ( ЖАНА ) операторун иштетүүнү түшүнүү үчүн төмөнкү мисалдарды беришибиз мүмкүн.
| А | В | А & B |
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
Электрондук схемада көрүнүп турат. Лампочканын күйгүзүү үчүн А жана В ключтары байланышы зарыл. Эгер ключтардын бирөөсү байланышкан болбосо лампочка күйбөйт. А жана В ключтардын байланыш шарты болсо логикалык көбөйтүү амалына окшойт. Таблицадагы А жана В элементтарин көбөйткөндө кандай натыйжа бериши көрсөтүлгөн. Демек шарт аткарылышы үчүн ар эки тарап туура trye болуусу зарыл.
Логикалык or ( ЖЕ ) оператору иштешин түшүнүү үчүн төмөнкүчө мисалдарды берүү мүмкүн.
| А | В | А or B |
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 10 |
Электрон схемада көрсөтүлгөн А же В ачкычтарынын бири байланса натыйжа туура trye болот жана лампочка күйөт. Таблица болсо логикалык кошуу амалын көрсөтүүдө.
Логикалык not ( ЭМЕС ) амалы.
| А | not A |
| 0 | 1 |
| 1 | 0 |
Электрон схемада транзистордун иши көрсөтүлгөн. Транзистордун эмиттер тарабынан келип жаткан ток коллектордон өтүп лампочканын күйгүзөт. Эгер транзистордун база тарабындагы А ачкычты байланыштырылса эмиттерден келип жаткан токко каршылык кылып лампочканы өчүрөт. Же болбосо ачкыч байланыштырылса 0, ал эми байланыштырылбаса 1 болот.
Мисалдарда көрөбүз.
Берилген эки сандын ичинде 10 го бөлүнө турганы бар же жок экендигин аныктагыла!
a = int(input())
b = int(input())
if a % 10 == 0 or b % 10 == 0:
print('YES')
else:
print('NO')
Эгер а 0 жана b болсо 0 дон кичине эмес деген натыйжа алынышы керек болсо, анын төмөнкүчө жазуу мүмкүн
if a 0 and not (b
же not (b 0) ордуна (b = 0) деп жазуу да мүмкүн.
Дагы бир мисал:
+ - х
2 5
Белгилүү сектордун көрсөтүлгөнүндөй жазүү үчүн
If x=2 and xдеп жазылат . Аны кыскача кылып If 2
ал эми
+ - + х
2 5
Белгилүү сектордун көрсөтүлгөнүндөй жазүү үчүн
If xоr x5: деп жазылат
Төмөндөгү мисалда берилген чекиттин координатасы координата текстинин кайсы бирине тиешелүү экендигин аныктоо мүмкүн. Бул мисалды аткарууда if... elif... else каскадтуу биримдиктен пайдалануу мүмкүн:
x = int(input())
y = int(input())
if x 0 and y 0:
print("Биринчи чейрек")
elif x 0 and y 0:
print("Төртүнчү чейрек")
elif y 0:
print("Экинчи чейрек")
else:
print("Үчүнчү чейрек")
Дагы бир тапшырманын иштелишин көрөбүз.
Квадраттык теңдеменин тамырларын эсептеп табуучу программаны
түз!
Квадраттык теңдеменин тамырларын табуу үчүн төмөнкүчө алгоритм боюнча иштөө мүмкүн.
а,b,c ларга сан бер.
Дискриминантты d=b2-4ac формула менен чечимин тап!
Эгер дискриминант 0 дөн чоң же барабар болсо теңдеменин тамырын
формула менен тап!
Антпесе теңдеменин чечими жок.
Анын программасын түзүү үчүн math библиотекасын активдештирип алуу зарыл болот. Себеби тамыр ичиндеги сандарды чыгаруу үчүн математикалык коду керек болот.
import math
a=int(input("a= "))
b= int(input ("b= "))
c= int(input ("c= "))
d=b** 2 - 4*a*c
if d=0:
x1=(-b+math.sqrt(d))/(2*a)
x2=(-b-math.sqrt(d))/(2*a)
print("x1= ",x1)
print("x2= ",x2)
else: print("chechimi jok")
Ш
артты текшерүү алгоритми үчүн тапшырмалар:
Борбору координата башында болгон айлананын радиусу r берилген, жана бир чекиттин жайгашкан ордун х,у координаталары берилген болсо, ушул чекит айлананын ичинде, сыртынде же айланада экендигин аныктоочу программа түзгүлө?
Координата тегиздигинде жайгашкан эки айлананын борборлорунун координаталары жана алардын радиустарынын узундуктары берилген болсо, бул эки айлана бири-бири менен кесилишеби. Аныктоо үчүн программа түзгүлө? Программаңыз эгер айланалар кесилишсе же үстүндө турган болсо “YES”, антпесе “NO” деген натыйжа берсин.
Натуралдык сан берилген. Ушул сан 4 кө бөлүнөбү же жокпу, аныктоочу программа түзгүлө?
У=
a,b,c жана x маанилери берилген. Х тин маанисине тиешелүү натыйжасы кандай болушун аныктагыла.
Жактары А ,В ,С болгон коробка бар. Ушул коробканы жактары М, К болгон эшиктен алып кирсе болобу? Эгер кирсе “YES” , антпесе “ No” деген жооп чыксын!
Уч бурчтуктун а,b,c жактары берилген . Ушул уч бурчтук тик бурчтуу уч бурчтук болушу мүмкүнбү? Эгер болсо “YES” , антпесе “ No” деген жооп чыксын!
Көрсөтүлгөн жыл кабиса жылбы же жокпу аныктагыла. Кабиса жылы деп, 4 кө бөлүнө турган бирок 100 гө бөлүнбөөчү жана 400 гө бөлүүнүүчү жылдарды айтылат.
Шахмат доскасында эки чакмактын координатасы берилген болсо , алардын түсү бирдейби же түрдүүбү. Аныктоочу программа түзгүлө? Эгер бирдей болсо “YES” , антпесе “ No” деген жооп чыксын.
Шахмат доскасында төранун жайгашкан координатасы берилген. Эгер башка фигуранын да координатасы берилсе , төра аны жей алышына программа түзгүлө? Эгер жей алса “YES” , антпесе “ No” деген жооп чыксын.
Шахмат доскасында пилдин жайгашкан координатасы берилген. Эгер башка фигуранын да координатасы берилсе , пил аны жей алабы жокпу аныктоочу программа түзгүлө? Эгер жей алса “YES” , антпесе “ No” деген жооп чыксын.
Шахмат доскасында аттын жайгашкан координатасы берилген. Эгер башка фигуранын да координатасы берилсе , ат аны жей алабы жокпу аныктоочу программа түзгүлө? Эгер жей алса “YES” , антпесе “ No” деген жооп чыксын.
Шахмат доскасында каролдун жайгашкан координатасы берилген. Эгер башка фигуранын да координатасы берилсе , корол аны жей алабы жокпу аныктоочу программа түзгүлө? Эгер жей алса “YES” , антпесе “ No” деген жооп чыксын.
Шахмат доскасында ферздин жайгашкан координатасы берилген. Эгер башка фигуранын да координатасы берилсе , ферз аны жей алабы жокпу аныктоочу программа түзгүлө? Эгер жей алса “YES” , антпесе “ No” деген жооп чыксын.
Циклдик операторлор.
Кээ бир алгоритмдерде бир түрдөгү амалдардын кайра-кайра келүүсүнө көп жолугабыз. Ошондой амалдардын алгоритмдерин жасоо үчүн Python до бизге while жана for операторлору жардам берет.
While оператору
W
hile оператору - «Ошондой болгон учурда кайталансын» деген маанини билдирет.
Мисалы үчүн while dдегени d нын элементи 10 болгонго чейин кайталансын деген маанини берет. While операторунда (:) коюлгандан кийин цикл башталат жана кийинки сап сүрүлүп жазылат. Бул оператор негизинен кайталануу учуру канча жолу экендиги анык болбогон учурда оң болот.
Бул оператордун көрүнүшү төмөнкүчө болушу мүмкүн.
while шарт:
инструкциялардын блогу
циклди ишке түшүргөндө алгач while оператору шартты текшерип көрөт. Эгер оператор шартты аткаруусун чын эмес учуруна келсе циклди аткаруусу токтотот жана кийинки инструкцияга өткөрөт. Эгер шарт чын болсо анда оператор шартты кайра-кайра текшерет.
1-Мисал. 1 ден 10 го чейинки сандарды саноо программасын түзгүлө? Деп айтылса, анда төмөнкүүчө программа түзөбүз.
d=0
while d
d+=1 # бул d=d+1 дегенди билдирет.
print (d)
2-мисал. Берилген сандын цифраларынын санын аныктоочу программа түз!
Бул программаны түзүү үчүн берилган сандын цифраларынын оң жактан бир-бирден өчүрүп таштайбыз, жана бул иш канча жолу кайталанган экендигин санап чыгабыз.
n=int(input())
n=0
while n0:
n=n//10 # же болбосо n//=10
n+=1
print (n)
программанын натыйжасын чыгаруу үчүн F5 ти басып n ге сан киргизилсе.
12345
Натыйжа
5 болот
| Бул программанын Pythonдо иштөөсүнүн башка оңой жолдору да бар n=int(input()) print(len(str(n))) |
3-мисал: Төмөнкү удаалаштык менен келе турган сандарды Фибоначчи сандары дейилет. 1 1 2 3 5 8 13 21.... Бул жерде кийинки сан өзүнөн мурунку эки сандын суммасына барабар болуп жатат. 100 гө чейинки болгон Фибоначчи сандарынын чыгаруучу программаны туз!
a=1
b=1
while a
print (a,end=" ")
a,b=b,a+b
программанын натыйжасы төмөнкүчө болот.
1 2 3 5 8 13 21 34 55 89
Тапшырмалар:
Берилген n жана m сандарынын эң чоң жалпы бөлүүчүсүн табуучу программа түзгүлө?
Берилген n санынан чоң болбогон 2 нин даражаларынын бардык натыйжаларын чыгаруучу программа түзгүлө?
Мисалы:
| Берилиши | Натийжа |
| 33 | 1 2 4 8 16 32 |
Спортчу биринчи күнү х км чуркады. Анан кейинки ар бир күнү мурунку күнгө караганда 10% ашык чуркады. Спортчу көрсөтүлгөн у км аралыкка кайсы күнү чуркап четиши мүмкүндүгүн эсептөөчү программа түзгүлө?
| Берилиши | Натыйжа |
| 100 121 | 3 |
0 саны жолукмайынча киргизилген бардык сандардын суммасын табуучу программа түз.
| Берилиши | Натыйжа |
| 1 3 9 0 | 13 |
for оператору .
Pythonдо for оператору башка программалоо тилдеринен айырмаланып, өзүнүн мүмкүнчүлүктөрүнүн көп экендиги менен айырмаланып турат. for оператору да циклдик оператор эсептелет.
Алгач 0 ден 10 го чейинки болгон натуралдык сандарды санап берүүчү программаны түзүп көрөбүз.
for i in range (11):
print (i,end=" ")
Бул жерде биринчи сапты «i үчүн 11 га чейинки болгон натуралдык сандар ичинен берилсин» деп которсо болот. Бул жерде алгачкы сан 0 болуп, акыркы сан 10 болот. i 11 ди окуганда кайталоо токтойт. Саптын акырына кош чекит коюлат. Ошондо кийинки сап штрихтуу сызык менен көрсөтүлгөн жерден баштап жазылат. Эгер кийинки сап башынан башталса кайталоо бүткөн экендигин билдирет. Жогорудагы коддун жообу
0 1 2 3 4 5 6 7 8 9 10 болот.
Ал эми саноо 0 дон эмес 1 ден башталсын деп айтылса , анда:
for i in range (1,11):
print (i,end=" ")
натыйжасы болсо 1 2 3 4 5 6 7 8 9 10 болот.
Эми 1 ден 10 го чейинки так сандарды чыгарсын , деп айтылса анын коду төмөнкүчө болот.
for i in range (1,11,2):
print (i,end=" ")
Биринчи сапка кошулган 2 саны «эки кадам менен» деген маанини берет.
1 ден 10 го чейинки жуп сандарды чыкаруу үчүн кайсы жерде кандай өзгөрүү киргизилет?
Жообу :
for i in range (0,11,2):
Эгер 10 дөн 1 тарапка санасын деп айтылсак анын коду мындай болот.
for i in range (10,0,-1):
print (i,end=" ")
жообу: 10 9 8 7 6 5 4 3 2 1 болот.
Python до for операторунан белгилүү чоңдуктарда да пайдаланса болот. Мисалы:
a="Abrakadabra"
b=" "
for i in a:
b=b+i
if i=="k":
break # кайталоону токтоту
print (b)
Бул коддун жообу Abrak болот.
Мисалы 1 ден 100 го чейинки болгон натуралдык сандардын суммасын табуучу программаны туз! деген болсо анын программасы төмөнкүчө болот.
sum = 0
for i in range(1, 101):
sum += i
print(sum)
2-сап төмөнкүчө окулат. Сандары i үчүн 1 ден 101 гачейин кайталансын.Кайталануунун акыркы цифрасы 101 болгондугунун себеби кайталануунун акыркы мааниси 100 болот жана 101 болгондо кайталануу токтойт.
sum += i дегени sum = sum + i деген формуланын кыскартырып жазылган көрүнүшү.
Программанын натыйжасы 5050 болот.
Эгер 1 ден 100 гө чейинки так сандарды кошуучу программа түзгүлө? Деген болсо , программа төмөнкүчө болот.
sum = 0
for i in range(1, 101,2):
sum += i
print(sum)
натыйжасы болсо 2500 болот.
Эгер программада саноонун тескерисине аткаруусун кааласак, Мисалы: 100 дөн 1 га чейинки жуп сандарды кошуучу программа туз! дейилсе ал төмөнкүчө болот.
sum = 0
for i in range(100, 1,-2):
sum += i
print(sum)
натыйжасы болсо 2500 болот.
2-сапты төмөнкүчө окуу мүмкүн болот. Сандары i үчүн 100 дөн 1 ге чейин -2 кадам менен кайталансын.
Кайталоо учурунда кортеждерден пайдалуу мүмкүн болгон мисалын көрөбүз
i = 1
for color in 'red', 'orange', 'yellow', 'green', 'cyan', 'blue', 'violet':
print('#', i, ' color of rainbow is ', color, sep = '')
i += 1
Бул программанын натыйжасы төмөнкүчө болот:
#1 color of rainbow is red
#2 color of rainbow is orange
#3 color of rainbow is yellow
#4 color of rainbow is green
#5 color of rainbow is cyan
#6 color of rainbow is blue
#7 color of rainbow is violet
Бул мисалда color удаалаш 'red', 'orange'... дарды алып жатат. i += 1 болсо ар бир сапты номерлеп берип жатат.
i += 1 формуласы i = i + 1 менен окшош башка арифметикалык амалдар да *=, -=, /=, %= көрүнүшүндө да жазуу мүмкүн....
Программада маанилери ар түрдүү болушу мүмкүн. Мисалы:
for i in 1, 2, 3, 'one', 'two', 'three':
print(i)
Алгачкы үч маанилер int тибинде болсо , калгандары str тибинде болот.
Кийинки маселеде белгилүү чоңдуктар менен иштөөнүн дагы бир мүмкүнчүлүгү көрсөтүлүп жатат.
Мисалы үчүн:
Informatika сөзүндөгү биринчи “а” тамгасына чейинки сөздөрдү ажыратып алуучу программа түзгүлө - деген тапшырма берилсе, анын көрүнүшү төмөндөгүдөй болушу мүмкүн.
f="informatika"
sum=""
for i in f:
if i=="a":
break
else:
sum += i
print(sum)
| Бул программанын дагы бир кыйла жеңил жол менен чыгарууга да болот k="informatika" print(k[:-1])
Тапшырмалар
Берилген 10 түрдүү сандын суммасын табуучу программа түзгүлө? Берилген N түрдүү сандын арифметикалык орто санын табуучу программа түзгүлө? Берилген n натуралдык сандын ар бирин кубга көтөрүп суммасын табуучу программасын түзгүлө? 13+23+33+...+n3 Берилген n факториалды эсептөөчү программасын түзгүлө? n саны берилген. Жана n түрдүү сан берилген. Ушул сандардын ичинен жалаң 0 гө барабар болгондорү канча экенин аныктоочу программа түзгүлө? Сан жалаң 0 гө барабар болушу керек, цифралардын бири эмес. Мисалы;
Берилген n бүтүн маанилүү натуралдык сан боюнча көбөйтүү жадыбалын чыгаруучу программа түз! Эгер 9n же nn бөлчөк сан болсо 0 чыксын. Мисалы: 4 берилсе 4 х 1 = 4 4 х 2 = 8 4 х 3 = 12 4 х 4 = 16 4 х 5 = 20 4 х 6 = 24 4 х 7 = 28 4 х 8 = 32 4 x 9 = 36 Берилген n натуралдык сандын цифраларынын суммасын эсептөөчү программаны түзгүлө? Эгер 2018 n же n Мисалы: 1324 10 -13 0
|
Белгилүү чоңдуктар менен иштөө.
Python программасында белгилүү чоңдуктар менен иштөөдө башка программалоо тилдерине караганда жөнөкөй аткаруу мүмкүнчүлүгүнө ээ. Төмөндө белгилүү чоңдуктар менен иштөөнүн кыска ыкмаларын көрөбүз.
Алгач берилген сөздүн узундугун аныктоочу кодун жазабыз
f="Informatika"
b=len(f)
print(b)
натыйжа болсо 11 болот. Себеби "Informatika" сөзү 11 тамгадан турат.
Эми берилген сөздөн керектүү тамгаларды ажыратып алуу ыкмаларын колдонуп көрөбүз.
Сөздүн сол тарабынан тамгаларды ажыратып алуу:
Мисалы "Informatika" сөзүнөн “ Inf” тамгаларын ажыратып алуу үчүн төмөндөгүдөй код жазуу мүмкүн.
f= "Informatika"
b=f[:3]
print(b)
натыйжа --- Inf
Эми ушул сөздүн оң жагындагы тамгаларды ажыратып алуучу кодун көрөбүз.
f="Informatika"
b=f[3:]
print(b)
натыйжа ---- ormatika
Эми ушул сөздүн арасындагы тамгаларды ажыратып алуучу кодун көрөбүз.
f="Informatika"
b=f[2:8]
print(b)
натыйжа --- format
Сөздун арасынан 2 кадам менен ажыратып алуу да мүмкүн. Анын коду төмөндөгүдөй ботот. Бул жерде ар бир тамганын өз индекстери бар экендигин эске алуу зарыл. Мисалы: “informatika” cөзүндө “i” тамгасы 0-ячейкада турат, “n” тамгасы 1- ячейкада....
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| i | n | f | o | r | m | A | t | i | k | a |
Төмөндө жуп ячейкалардагы тамгаларды ажыратып алабыз.
f="Informatika"
b=f[::2]
print(b)
натыйжа -- Ifraia
Ал эми так ячейкалардагы тамгаларды ажыратып алуу үчүн
f="Informatika"
b=f[1::2]
print(b)
натыйжа --- nomtk
Эгер тамгалар жайгашкан ячейканын индексинин алдына (-) белгиси коюлса жогоруда берилген тапшырмаларды тескерисинче аткаруу мүмкүн болот.
| -11 | -10 | -9 | -8 | -7 | -6 | -5 | -4 | -3 | -2 | -1 |
| I | n | f | o | r | m | a | t | i | k | a |
Мисалы:
f="Informatika"
b=f[:-3]
print(b)
натыйжа --- Informat
Же болбосо мындай жазып көрөбүз:
f="Informatika"
b=f[-3:]
print(b)
натыйжа --- ika
Арасынан алуу үчүн болсо:
f="Informatika"
b=f[2:-3]
print(b)
натыйжа --- format
Мисалдар менен көрөбүз.
Мисалы: Окуучунун аты жөнү «Мамлекетов Мекенбай» болсун. Ушул фамилядагы тамгалардан пайдаланып жаңы «окмотбай» деген сөз жасап көрөлү.
a="Mamleketov"
b="Mekenbay"
c=a[-2:-1] # 'o' тамгасын ажыратып алат
f=a[5:6] # 'k' тамгасын ажыратып алат
d=b[:1] # 'M' тамгасын ажыратып алат
z=a[-3:-2] # 't' тамгасын ажыратып алат
e=b[-3:] # 'bay' тамгасын ажыратып алат
n=c+f+d+c+z+e # бардыгын кошуп койду
print(n)
натыйжа болсо --- okMotbay
Белгилүү чоңдуктар менен иштөөчү башка методдор.
find() – көрсөтүлгөн тамганын белгилүү чоңдуктагы алгачкы жайгашкан ордунун индексин берет. Эгер андай тамга жок болсо натыйжада -1 чыгат. Мисалы:
s=Hello”
print(s.find(“e”)) # жообу 1 болот
print(s.find(“ll”)) # жообу 2 болот
print(s.find(“L”)) # жообу -1 болот
rfind() -- көрсөтүлгөн тамганы белгилүү чоңдукта акыркы жайгашкан ордунун индексин берет. Эгер андай тамга жок болсо натыйжада -1 чыгат. Мисалы:
s="Hello"
print(s.find("l")) # жообу 2 болот
print(s.rfind("l")) # жообу 3 болот
s.replace(old,new)- s белгилүү чоңдуктагы көрсөтүлгөн тамганы башка тамгага алмаштырып коёт.
s="Hello"
print(s.replace("l","L"))
натыйжа --- HeLLo
Эгер replace ке дагы бир параметр кошсок s.replace(old,new,count) бардык тамгалар эмес алгачкы count көрсөткөн тамгалар гана алмашылат.
Print(“Abrakadabra”.replase(“a”,”A”,2))
Натыйжасы --- AbrAkAdabra
cоunt() – берилген белгилүү чоңдуктан көрсөтүлгөн тамганын санын аныктайт.
s="Abrakadabra"
print(s.count("a"))
натыйжасы 4 чыгат. Себеби бул сөздө «а» тамгасы 4 жолу берилген.
Тапшырмалар:
Сөздүк берилген.
Алгач ушул сөздүн үчүнчү тамгасын чыгарсын.
Экинчи сапта ушул сөздүн аягындагы тамгасынын алдындагы тамганы ажыратып алсын.
Үчүнчү сапта алдыңкы беш тамганы чыгарсын.
Төртүнчү сапта акыркы эки тамгасынан башка бардык тамгаларды чыгарсын.
Бешинчи сапта жүп индекстеги тамгаларды ажыратып чыгарсын.
Алтынчы сапта так индекстеги тамгаларды ажыратып чыгарсын.
Жетинчи сапта сөздү тескерисинен жазып койсун.
Сегизинчи сапта сөздүн арка тарабынан баштап бирден тамга таштап чыгарсын.
Тогузунчу сапта ушул сөздүн узундугун аныктасын.
Берилген сөздө канча бир түрдүү тамга бар экендигин аныктоочу программа түзгүлө?
Мисалы:
Kirgizistan i tamgasi 3
Окуучу өзүнүн аты жөнүндөгү тамгалардан пайдаланып 3 түрдүү жаңы сөз чыгарсын!
Бизге белгилүү болгон n факториалды n! = 1 * 2 * ... * n. ге окшоп эсептелет. Мисалы үчүн 5! = 1 * 2 * 3 * 4 * 5 = 120. Бул факториалдын for циклдык оператору менен эсептелет. Бирок бизге ар түрдүү сандардын факториалдарын эсептөө керек болсун. Андай программаны түзүү үчүн алгач бир факториалдын эсептөөчү кодун түзүү мүмкүн. Анан Copy-Paste жардамында аны кайра- кайра көчүрүп жазуу мүмкүн
Мисалы:
# 3! Ту эсептөө үчүн
nat = 1
for i in range(1, 4):
nat *= i
print(nat)
# 5! Ти эсептөө үчүн:
nat = 1
for i in range(1, 6):
nat *= i
print(nat)
Бирок биринчи код туура эмес жазылып калса,анда калгандары да ошондой катачылык менен кетет, жана компьютер эсинен көп жайды ээлеп алат. Бир түрдүү коддорду кайра-кайра жаза бербөө үчүн программалоо тилдеринде функциялар менен иштөөчү методдору жардам берет.
Функция — бул башка программадан ажыратып алынган атайын код болуп, керек болгон убакытта ага кайрылуу мүмкүн.
Мисалы: Жогоруда берилген factorial() функциясы үчүн программа түзүп көрөбүз.
def factorial(n):
nat = 1
for i in range(1, n + 1):
nat *= i
return nat
print(factorial(3))
print(factorial(5))
Эстеп калгыла! Функциялар программанын башында же программанын кайсы бир бөлүмүнүн алдына керек болсо , ошол жерге коюлат. Жогоруда берилген мисалдагы биринчи сан функциянын башталышын билдирет. factorial — болсо функциянын аты деп аталат. Ушундан кийин кашаа ичине ушул фунциянын элементтери берилет. Катардагы элементтер бири- бири менен үтүр менен ажыратылат. Жогорку катарда n жогоруулугу берилген. Катар аягында эки чекит коюлат. Функция ичинде n факториалды эсептеп жана аны nat га сакталат. Функция return nat берилгенден кийин өз ишин аяктайт жана функцияга кайрылган жерге кайтат. Return функциянын керек болгон каалаган жерге коюу мүмкүн Эгер функцияда кайтаруу убагында шарт болбосо return болбостугу мүмкүн.
Дагы бир мисал көрөбүз: max() функциясы эки санды алсын жана анын чоңун тапсын.
def max(a, b):
if a b:
return a
else:
return b
print(max(3, 5))
print(max(5, 3))
print(max(int(input()), int(input())))
Үч сан ичинде чоңун табуу функция үчүн max3() ти иштетип көрөбүз..
def max(a, b):
if a b:
return a
else:
return b
def max3(a, b, c):
return max(max(a, b), c)
print(max3(3, 5, 4))
же болбосо
def max(*a):
nat = a[0]
for val in a[1:]:
if val nat:
nat = val
return nat
print(max(3, 5, 4))
Бул функцияга кайрылган бардык берилүүчүлөр бир эле жылдызча менен берилген *а атына топтолот.
Локал жана глобал өзгөрүүчүлөр.
Функция ичинде бул функцияда берилбеген өзгөрүүчүлөрдү да жарыя кылуу мүмкүн
def f():
print(a)
a = 1
f()
Бул жерде а өзүнө 1 деген санды алат жана f() функциясы бул берилүүчүлөрдү басып чыгарат. f()функциясы чакырылган убакытта a өзгөрүүчүсү берип болгон эле. Функциядан тышкары жарыя кылынышы мүмкүн болгон мындай өзгөрүүлөрдү глобалдык өзгөрүүчүлөр деп айтылат..
Глобалдык өзгөрүүлөр функция ичинде берилсе да кызыктуу натыйжалар бериши мүмкүн.
def f():
a = 1
print(a)
a = 0
f()
print(a)
a өзгөрүүчү функция ичинде алмашканына 1 жана 0 натыйжаларын берет. Бул глобалдык өзгөрүүчүлөрдү кокус өзгөрүшүнөн коргоо үчүн иштетилет.. Мисалы: функцияны цикл ичинде өзгөрүүчүсү менен чакырылган болсо. Функция ичиндеги i өзгөрүүчүсү болсо функцияны даярдоо үчүн керек болсун дейли. Мындай абалда өзгөрүүчүлөр ар түрдүү болушу керек.Мына бул коддо биз айткан нерселерди кандай иштетилгенин жыйынтык кылып көрөбүз!
def factorial(n):
nat = 1
for i in range(1, n + 1):
nat *= i
return nat
for i in range(1, 6):
print(i, '! = ', factorial(i), sep='' “)
натыйжасы төмөнкүчө болот.
1! = 1
2! = 2
3! = 6
4! = 24
5! = 120
Функция глобал өзгөрүүчүлөрдү алмаштыра алышы үчүн функция ичинде бул өзгөрүүчүлөрдү global сөзүнүн жардамында жарыя кылып коюлушу керек болот.
def f():
global a
a = 1
print(a)
a = 0
f()
print(a)
Бул мисалдын натыйжасы 1 болот. Анткени ал өзгөрүүчүсү глобал сыяктуу жарыя кылынган жана функция ичиндеги өзгөрүү функциядан сыртта да негиз боло алат.
Тактап айтканда глобал өзгөрүүчүлөрдүн функция ичинде өзгөрбөгөнү жакшы. Эгер сиздин функцияңыз кандайдыр бир өзгөрүүлөрдү алмаштырышы керек болуп калса,бир эле сөз менен айтканда элементтерди кайтарып берсин жана сиз өзүңүз функцияны чакыруу убактында элементтерди киргизишиңиз мүмкүн. Ошондо функция элементеринен бекем болот жана ошондой программадан башкасына көчүрүү мүмкүн.
Мисалы: Сиздин программаңыз киргизилген факториалды эсептеп. кийинчээрэк сиз f өзгөрүүчүгө сакташыңыз керек болот. Алгач туура эмес кодду көрөбүз.
def factorial(n):
global f
nat = 1
for i in range(2, n + 1):
nat *= i
f = nat
n = int(input())
factorial(n)
Бул код туура эмес түзүлгөн. Себеби аны кайра жазуу мүмкүн эмес. Эгер сизге эртең дагы бир факториал туурасындагы программа түзүү керек болуп калса сиз бул коддон пайдалана албайсыз. Сизге аны өзгөртүү керек болуп калат. Бир эле сөз менен айтканда аны төмөндөгүдөй жазуу мүмкүн.
# Коддун бул бөлүгүн бир программадан башкасына көчүрүшүңүз мүмкүн.
def factorial(n):
nat = 1
for i in range(2, n + 1):
nat *= i
return nat
# коддун бөлүгү бүттү
n = int(input())
f = factorial(n)
# Эми f өзгөрүүчүнүн башка программада да иштетүү мүмкүн.
Функцияга эки жана андан артык өзгөрүүчүлөрдү да киргизүү мүмкүн
return [a, b]
n, m = f(a, b)
Тапшырма:
3 суроо –жооптон турган тест программасын түзгүлө?
Программаны төмөндөгүдөй түзүү мүмкүн
t=0
n=0
def test():
global t,n
a=int(input("Туура жооптуу киргиз--"))
if a == b:
t+=1
else:
n+=1
return [t,n]
print("Чыңыз Айтматов качан туулган?")
print("1) 1927")
print("2) 1928")
print("3) 1929")
print("4) 1926")
b=2
t,n=test()
print("Алишер Наваий качан туулган?")
print("1) 1541")
print("2) 1641")
print("3) 1441")
print("4) 1941")
b=3
t,n=test()
print("200 сом дук акчада кимдин сүрөтү бар")
print("1) Алыкул Осмонов")
print("2) Чыңгыз Айтматов")
print("3) Токтогул Сатылганов")
print("4) Тоголок Молдо")
b=1
t,n=test()
print(t,n)
Массивдер менен иштөө
1 өлчөмдүү массивдер.
Мисалы: Жуманын кундөрүнүн ичинде аба ырайынын температурасы кандай болгондугунун көрсөтүүчү жадыбал берилген болсун.
| k | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| t | -5 | 3 | 1 | -2 | 4 | 7 | 2 |
негизинде массивдер индекси 0 дөн башталат. Ошондуктан бул жадыбалга дагы бир ячейка кошуп анын 0- индексиндеги ячейка деп кошуп коёбуз. Натыйжада индекстердин саны 7эмес 8 болуп калат.
| k | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| t | 0 | -5 | 3 | 1 | -2 | 4 | 7 | 2 |
Бул жадыбалда k сапта күндөрдү, t сапта болсо ошол күндөрдөгү аба ырайынын температурасы берилген болсун дейли.
Демек k сапта жадыбалдын индекстери берилген, t болсо жадыбалдын аты, ячейкадагы бергендер болсо маанилери деп аталат.
Айталы, жуманын 3-күнүндөгү температурасы 1 градус болгон болсо, аны математикада t3=1 көрүнүшүндө берилет. Pythonда болсо t[3] = 1 көрүнүшүндө берүү мумкүн. Демек t[5] =4 же t[7] =2 .
Ушул жадыбалдан пайдаланып мисалдар менен көрөбүз.
Мисал арифметикалык амалдарды аткарып көрөбуз.
t1= t2+t6 болсун демек t1=3+7 же t1=10 болот. Ал Pythonдо төмөндөгүчө жазуу мүмкүн:
t[1]=t[2]+t[6] . Демек t[1] =10 болот.
Улантабыз. t3=t4+t5 демек Pythonдо t[3]=t[4]+t[5] . Анын натыйжасы болсо t[3]=-2+4 . Демек t[3]= 2 болот.
Эми төмөнкү амалды аткарабыз. t[7]=t[1]+t[3] . Эгeр бул мисалдын t[7]=-5+1=-4 болот десек туура эмес болот. Себеби t[1]=-5 эмес t1= t2+t6 формуласынын натыйжасына карата t[1]=10 , t3=t4+t5 формуласынын натыйжасына карата t[3]=2 болгондуктан t[7]=10+2 =12 болот.
Жаңы өзгөртүлгөн маанилеринин негизинде жадыбалы түзүлсө, анын натыйжасы төмөнкүдөй болот:
| K | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| T | 0 | 10 | 3 | 2 | -2 | 4 | 7 | 12 |
Эми ушул амалдардын Pythonдо программасын тузуп көрөбуз.
t=[0,-5,3,1,-2,4,7,2]
t[1]=t[2]+t[6]
t[3]=t[4]+t[5]
t[7]=t[1]+t[3]
print(t[1],t[2],t[3],t[4],t[5],t[6],t[7])
натыйжасы болсо
10 3 2 -2 4 7 12
Бул программада 1-жолчодо массивдин сандарын киргизүү . 2, 3, 4-жолчолордо массивдин жаңы маанилерин алуу үчүн аткарылган амалдар. 5-жолчодо болсо массивдин натыйжасын чыгаруу амалдары аткарылган.
5-жолчону print(t) көрүнүшүндө да жазса болот. Анда натыйжа
[0, 10, 3, 2, -2, 4, 7, 12] болуп чыгат.
Массив натыйжасын чыгаруунун төмөнкүчө оң көрүнүшкө өзгөртүү мүмкүн.
for i in range(8):
print(t[i],end=" ")
Массивдин элементтерин киргизүүнүн ыкмалары.
Массив элементерин бүтүн сандар int көрүнүшүндө же , белгилүү чоңдук str көрүнүшүндө да берүү мүмкүн. Массивдин элементтерин киргизүүнүн ар түрдүү ыкмаларын көрүп чыгабыз.
Массив элементтерин киргизүүнүн 1-ыкмасы:
Мисалы:
primes = [0, -5, 3, 1, -2, 4, 7, 2]
же
Raindow=[“red”,”orang”,”yellov”,”green”,”blue”,”indigo”,”violet”]
Бул ыкма массив элементтерин азыраак болгон учурда киргизүү мүмкүн.
Массив элементтерин киргизүүнүн 2-ыкмасы
append оператору
Массив элементтерин append операторунун жардамында киргизүүнүн төмөнкүчө көрүнүштө жөнөкөйлөтүү мүмкүн.
t=[ ]
for i in range(8):
t.append(int(input()))
Бул жерде append оператору t[ ] массивдин элементтерин удаалаш бириктирип берет. Жогоруда берилген мисалдын программасын түзөбүз.
t=[ ]
for i in range(8):
t.append(int(input()))
t[1]=t[2]+t[6]
t[3]=t[4]+t[5]
t[7]=t[1]+t[3]
for i in range(8):
print(t[i],end=" ")
Массив элементтерин киргизүүнүн 3-ыкмасы.
Мисал, массив элементтери көп болсун. Аларды киргизүүнү төмөнкү ыкма менен жөңөкөйлөтүү мүмкүн.
t=[0]*int(input()) #массив элементтеринин санын киргизүү.
for i in range(len(t)): # len оператору менен элементтеринин узундугун
t[i]=int(input()) аныктайт.
Массив элементтерин киргизүүнүн 4-ыкмасы
split оператору
Массив элементтерин бир сапка киргизүү да мүмкүн. Бул учурда тизмени input() функциясы менен берилет. Маалымдамалар пробел менен ажрыратылган болуусу керек. Ошондон кийин бул элементтерди split() операторунун жардамында жадыбалга бириктиребиз.
Мисалы:
s = input() # s == '1 2 3'
a = s.split() # a == ['1', '2', '3']
Эгер көңүл бурган болсоңуз берилгендер белгилүү чоңдуктар көрүнүшүндө тизмеге топтолгон. Чыныгы сан көрүнүшүндө эмес. Аларды санга өзгөртүрүү үчүн төмөнкү кодду иштетүү мүмкүн:
a = input().split()
for i in range(len(a)):
t.append(int(a[i])
Python генератордун жардамында ошондой кодду бир сапта жазуу да мүмкүн.
a=[ int(i) for i in input().split()]
Массив элементтерин киргитзүүнүн 5-ыкмасы
Кокустук сандарды киргизүү.
Мисалы: Массив элементтери көп болсун, элементтери болсо ар түрдүү же болбосо кокустан сандардан түзүлгөн болсун. Анда аларды киргизүүнү төмөнкүдөй көрүнүштө өзгөртү мүмкүн.
Мисалы: Массив элементтерин 1 ден 9 га чейин болгон кокустук сандардан түзүлсүн. Анын randrage функциясынын жана random модулун жардамында киргизебиз.
from random import randrange
n=8
t=[randrange(1,8) for i in range(n)]
Массив элементтерин маанилерин чыгаруу үчүн болсо мындай ыкмадан пайдалануу да мүмкүн
for elem in t:
print(elem,end=" ")
Бизге белгилүү болгон 36 дан 6 цифра ажыратып алуу керек болгон спортлото оюну үчүн негизги кодун төмөнкүчө түзүү мүмкүн.
from random import randrange
loto=[randrange(1,37) for i in range(6)]
for sport in loto:
print(sport,end=" ")
Тизмелер менен иштөөдө бир канча мисалдарды жөн эле чечимдерин табуу да мүмкүн:
x in A Берилген маалыматтар тизмеде бар же жоктугун аныктайт. Натыйжалар true же false көрүнүшүндө болот.
x not in A Анын not(x in A) көрүнүшүндө берүү да мумкүн.
min(A) Тизменин эң кичине маанисин чыгарат.
max(A) Тизменин эң чоң маанисин чыгарат.
A.index(x) Берилген х тин маанисинин тизмедеги биринчи учраганынын
индексин көрсөтөт.
A.count(x) Тизмедеги х тин канча экендигин билдирет.
sorted(А) Берилгендерди өсүү тартибинде сортировка кылат.
sorted(n,reverse=True) Берилгедерди кемүү тартибинде сортировка
кылат.
Мисал түрүндө көрөбүз:
Берилгендерди кемүү тартибинде сортировка кылуу программасын түз!
n=input().split()
k=sorted(n,reverse=True)
print(k)
натыйжаны алабыз.
2 0 1 5 4 6 3
['6', '5', '4', '3', '2', '1', '0']
Тапшырмалар
Берилген сандар жадыбалында жуп индекстеринде жайгашкан бөлүктөрүн ажыратып чыгаруучу программа түзгүлө?
(A[0], A[2], A[4], ...)
| Берилиши | Натыйжа |
| 1 2 3 4 5 | 1 3 5 |
| 4 5 3 4 2 3 | 4 3 2 |
Сандардын тизмеси берилген.Ушул тизмеде биринчи жолуккан жана белгиси бир түрдүү болгон жандаш туруучу сандарды ажыратып чыгаруучу программа тузгүлө!
| Берилиши | Натыйжа |
| -1 2 -3 -4 5 | - 3 -4 |
| 4 -5 3 4 -2 -3 | 4 3 |
Сандар тизмесинде берилген маанилердин эң чоңун жана ал жайгашкан индексин чыгаруучу программа түзгүлө? Эгер андай элементтер көп болсо биринчи жолукканы натыйжа кылып алсын.
| Берилиши | Натыйжа |
| 1 2 3 2 1 | 3 2 |
| 1 1 2 2 3 3 4 4 | 4 6 |
Берилген тизмеде бир гана жолу жолуга турган сандарды табуучу программа түзгүлө? Сандар кандай жолукса ошол тартипте чыксын.
| Берилиши | Натыйжа |
| 4 3 5 2 5 1 3 5 | 4 2 1 |
| 1 2 3 4 5 5 | 1 2 3 4 |
Сандардын тизмеси берилген. Ушул тизмеде канча бир түрдүү сандардын жубу бар экендигин табуучу программа түзгүлө?
| Берилиши | Натыйжа |
| 1 2 3 2 3 | 2 |
| 1 1 1 1 1 | 10 |
Эки өлчөмдүү массивдер
Турмушта маалымдамаларды туура төрт бурчтук жадыбалдарда сактоого көп жолугабыз. Мындай жадыбалдар матрицалар же эки өлчөмдүү массивдер деп аталат.
Мисалы: төмөнкү жадыбалга карайбыз.
Бул жадыбал 4 сап жана 3 мамычадан турат. Жадыбалдын башка элементтеринин кандай аталышы чиймеде көрсөтүлгөн. Бул жадыбалдын маанилерин экранга чыгаруу үчүн
a = [[1, 2, 3], [4, 5, 6], [7,8,9], [10,11,12]]
for i in range(len(a)):
for j in range(len(a[i])):
print(a[i][j], end=' ')
print()
көрүнүшүндө берүү мүмкүн. Кодду ишке түшүрүлсө төмөнкү натыйжа чыгат.
1 2 3
4 5 6
7 8 9
10 11 12
Бул жерде a[0][0] == 1, a[0][1] == 2, a[0][2] == 3, a[1][0] == 4, a[1][1] == 5, a[1][2] == 6....
Бул жадыбалдын натыйжасын чыгарууда эки циклдик амалдар иштетилүүдө. Биринчи цикл сапчалардын номерин берсе, экинчиси элементтерди киргизип жатат.
Python до маалымдамалардын натыйжасын чыгаруунун бир канча жөнөкөй жолдору бар. Мисалы: жогорудагы программаны for оператору менен иштөөдө жөнөкөй ыкмалары:
a = [[1, 2, 3], [4, 5, 6], [7,8,9], [10,11,12]]
for row in a:
for elem in row:
print(elem, end=' ')
print()
Маанилердин арасын кеңейтип жазуу үчүн join() методунан да пайдаланса болот:
for row in a:
print(' '.join([str(elem) for elem in row]))
Мисалы: Ушул массивдин бардык маанилеринин суммасын табуу программасын түзүү керек болсун:
a = [[1, 2, 3], [4, 5, 6], [7,8,9], [10,11,12]]
s = 0
for y in range(len(a)):
for x in range(len(a[y])):
s += a[y][x]
print(s)
натыйжа болсо
78
Же ушул амалдын индекстерин иштетпей чыгаруу да мүмкүн:
a = [[1, 2, 3], [4, 5, 6], [7,8,9], [10,11,12]]
s = 0
for row in a:
for elem in row:
s += elem
print(s)
Эки олчомду массивдин маанилерин киргизүү ыкмалары.
Мисалы: Программада эки өлчөмдүү массив n сапча, жана ар бир сапчасында m таден элементтери берилсин. Элементтерди киритүүнүн ыкмаларын көрүп чыгабыз.
Биринчи жолчодо массивдин саптарынын саны берилет.
n = int(input())
a = [ ]
for i in range(n):
a.append([int(j) for j in input().split()])
Ушул ыкмада мына бул көрүнүштө да берүүгө мүмкүн.
Биринчи сапта массивдин саптарынын саны берилет
n = int(input())
a = [ ]
for i in range(n):
row = input().split()
for i in range(len(row)):
row[i] = int(row[i])
a.append(row)
Же генератордун жардамында мына бул көрүнүштө киргизүү да мүмкүн:
# Биринчи сапта массивдин саптарынын саны берилет
n = int(input())
a = [[int(j) for j in input().split()] for i in range(n)]
Мисалдар менен көрөбүз.
Мисалы n сапта жана n мамычада турган квадраттык массив берилген болсун. Анын сол жогорку бурчунан ылдыйдагы оң бурчун бириктирүүчү диагоналы 1 саны менен жазылган. Анын сол жагын 2 саны менен, оң жагын болсо 0 саны менен толтуруп массивдин жасоо программасын түзгүлө, деген тапшырма берилсин.
1 0 0 0
2 1 0 0
2 2 1 0
2 2 2 1
Ал ошондой натыйжа берүүсү керек. Демек a[i][j] массивде i==j болгондо 1 ди, iболсо 0,эгер ij болсо 2 санын чыгаруусу зарыл. Анын программасы төмөнкүчө болот.
n = 4
a = [[0] * n for i in range(n)]
for i in range(n):
for j in range(n):
if i
a[i][j] = 0
elif i j:
a[i][j] = 2
else:
a[i][j] = 1
for row in a:
print(' '.join([str(elem) for elem in row]))
Тапшырмалар
Алгач эки санды киргиз. Бири саптардын саны, экинчиси мамычалар санын берет. Кийин ушул жадыбалдын маанилерин киргиз. Андан соң ушул жадыбалда биринчи жолуккан эң чоң сандын индексин аныктоочу программа түз!
| Берилиши | Натыйжа | ||
| 1 2 | ||
| 3 5 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 2 4 |
Бул жерде 1-жолукканы “5” санынын индексин берүүдө
Бул жерда “15” санын жайгашкан индексин берүүдө.
Берилген n түрдүү туура төрт бурчтуктардын эң чоңунун аянтын табуучу программа түзгүлө? Алгач туура төрт бурчтуктун канча экендигин киргиз. Анан алардын аянтын аныктап, эң чоңунун аянтын натыйжа кылып ал.
| Берилиши | Натыйжа | ||
| 15 | ||
| 4 4 7 3 2 7 2 8 3 | 28 |
Жактары n x n болгон жадыбал берилген. Ушул жадыбалдын эң чоңу жана эң кичүү сандарынын айырмасын табуучу программа түзгүлө?
Жактары n x m жадыбалдын элементтери 0 жана 1 сандары менен толтурулган. Бардык 0 сандарынын 2 саны менен алмаштыруучу программа түз!
| Берилиши | Натыйжа | ||
| 1 2 1 2 2 1 1 2 1 1 2 2 |
Графикалык чиймелер менен иштөө.
P
ythonдо графикалык чиймелер менен иштөөнүн бир канча библиотекалары бар. Биз бул бөлүмдө Python дун эң жөнөкөй графикалык мүмкүнчүлүгү бар болгон turtle (ташбака) модулу менен таанышабыз. Алгач төмөнкү коддун жардамы менен графикалык терезеде «Перо» (“ташбака”) сүрөтүн чыгарабыз. Ал турган жерди координаталардын башы болгон 0,0 чекит деп алса болот.
import turtle
turtle.reset()
алгачкы чийүүнүн терезеси
Пайда болгон терезени чоңойтуу же кичирейтүү мүмкүн. Сүрөт башталуучу «Перо»су (“ташбака”) экрандын ортосуна жайгашкан. «Перо»нун учу карап турган тарап чийүүнүн багытын көрсөтөт. Төмөнкү сүрөттө координата тегиздигин берүү ыкмасы көрсөтүлгөн.
Х огунун координатасында бир чакмакка 10 пиксел батат деп алсак , демек 2 даана чакмакка 20 пиксел , 4 чакмакка 40 пиксел... деп белги коюп алабыз. Ал эми карама-каршы тарапты минус белгиси менен белгилеп алабыз. Ал координатасын да ошондой белги менен жазып чыкса болот. Turtle менен иштөөнүн башка методдорун үйрөнүү үчүн Help жардамчы бөлүмүнө кирип аныктоо мүмкүн. Эми tutrtle библиотекасында бар болгон негизги мектептин программасында үйрөнсө боло турган буйруктары менен таанышып чыгабыз. Калган командаларды окуучу ийримдерде өзүнчө үйрөнсө болот.
| команда | Аткара турганган иши
| мисал |
|
| up() | «Перо»нун изин калтырбай жылдыруу |
|
|
| down() | «Перо»нун чийүүсун баштоо | turtle.down() |
|
| goto(x,y) | «Перо»нун х,у координатадагы чекитке жылдыруу |
turtle.goto(100,50) |
|
| color(“ранг”) | Кийинки чиймелердин түсүнүн берүү | turtle.color(“blue”) turtle.color(“#0000ff”) | |
| width(n) |
«Перо»нун калыңдыгын берүү |
turtle.width(3) |
|
| forward(n) | «Перо» стрелкасы көрсөткөн тарапка алдыңкы n чекитке чейин жылдыруу |
turtle.forward(100) |
|
| backward(n) | «Перо» стрелкасы көрсөткөн тараптан тескери тарапка n чекитке чейин жылдыруу |
turtle. backward(100) |
|
| right(k) | «Перо» стрелкасын оң тарапка (саат стрелкасы багыты боюнча) k градус бурчка айландыруу |
turtle.right(70) |
|
| left(k) | «Перо» стрелкасын сол тарапка (саат стрелкасына тескери тарапка ) k градус бурчка айландыруу |
turtle.left(45) |
|
| radians() | Бурчтук өлчөмдөрүн радианда берүү | turtle.radians(3.14) |
|
| degress() | Бурчтук өлчөмдөрүн градустарда берүү |
turtle.degress(180) |
|
| circle(r) | Берилген r радиус боюнча айлана сызуу. Эгер r дин белгиси оң болсо сааттын стрелкасына карама-каршы тарапка айлана сызат, ал эми терс болсо сааттын стрелкасы багыты боюнча сызат |
turtle.circle(40) turtle.corcle(-50) |
|
| circle(r,k) | Берилген r радиус боюнча k градус бурчка жарым айлана чийүү | turtle.circle(40,45) turtle. circle(-50,275) |
|
| fill() | Берилген көрсөткүчү боюнча көрсөтүлгөн сызыкты жана аянттын боёп коёт | turtle.begin_fill() turtle.circle(-50) turtle.end_fill() |
|
| write(“ёзув”) | «Перо» турган жерден текст жазуу | turtle.write(“коор дината башы!”) |
|
| tracer(flag) | «Перо» көрсөткүчүн коюу (flag=1) же жок кылуу(flag=0) |
turtle.tracer(0) |
|
| clear() | Сүрөт сызылган жерди тазалоо | turtle.clear(0) |
|
Эми кээ бир программаларды түзүп көрөбүз.
Мисалы: Түз төрт бурчтукту чийүүчү программа түзөбүз.
import turtle
turtle.goto(100,0)
turtle.goto(100,100)
turtle.goto(0,100)
turtle.goto(0,0)
программаны сактап
Ғ5 топчусун бассак
Эми программага өзгөртүү киргизебиз
import turtle
turtle.width(5) # сызыктын калыңдыгын беребиз.
t
urtle.goto(100,0)
turtle.goto(100,100)
turtle.goto(0,100)
turtle.goto(0,0)
натыжа болсо мындай .
Эми түс берип сүрөттүн ичин боеп көрөбүз.
i
mport turtle
turtle.width(5)
turtle.color("red","blue")
turtle.begin_fill()
turtle.goto(100,0)
turtle.goto(100,100)
turtle.goto(0,100)
turtle.goto(0,0)
turtle.end_fill()
программанын натыйжасы.
Программада turtle оператору көп кайталанып жатат. Бул болсо программа түзүүдө кичине кыйынчылыкты пайда кылууда. Бул ишти жөнөкөйлөтүү үчүн болсо from turtle import* буйруктары менен turtle дун библиотекасындагы бардык модулдарын жүктөп алабыз. Натыйжа болсо бирдей.
f
rom turtle import*
width(5)
color("red","blue")
begin_fill()
goto(100,0)
goto(100,100)
goto(0,100)
goto(0,0)
end_fill()
Э
ми айлана сызып көрөбүз.
from turtle import*
width(5)
color("red","blue")
begin_fill()
circle(70)
end_fill()
Эми turtle модулунун башка операторлору менен иштөөчү программаларды түзүп көрөбүз. Төмөнкү программага мен килем деп ат койдум
from turtle import*
w
idth(2)
color("red","blue")
begin_fill()
tracer(3)
for x in range(100,-200,-20):
for y in range(100,-100,-30):
up()
goto(x,y)
down()
circle(50)
end_fill()
Мына дагы бир программа. Бул программанын help панелиндеги turtle бөлүмүнөн алдым.
from turtle import *
color('red', 'yellow')
begin_fill()
while True:
forward(200)
left(190)
if abs(pos())
break
end_fill()
done()
М
ына бул код ишке түшүрүлсө стрелкалуу курсор ордуна ташбака көрүнүшү чыгат.
from turtle import *
shape(‘turtle’)
color(‘blue’)
circle(50)
Координата сызыгында чекиттердин координатасы менен берилген сүрөт пайда кылуу программасы.
from turtle import*
reset()
tracer()
width(2)
color('#0000ff')
forward(150)
backward(300)
goto(0,0)
left(90)
forward(150)
backward(300)
goto(0,0)
up()
write('0,0')
x=-170
y=-120
coords=str(x)+","+str(y)
goto(x,y)
write(coords)
x=130
y=100
c
oords=str(x)+","+str(y) # программанын натыйжасында ушул сүрөт чыгат.
goto(x,y)
write(coords)
x=0
y=-100
coords=str(x)+","+str(y)
goto(x,y)
write(coords)
x=0
y=100
coords=str(x)+","+str(y)
goto(x,y)
write(coords)
x=150
y=0
coords=str(x)+","+str(y)
mainloop
goto(x,y)
write(coords)
right(90)
Тапшырмалардын жооптору
Input оператору темасы боюнча тапшырмаларга түзүлгөн мисалдар.
Сиз башка метод менен да программа түзсөнүз болот.
| 1) a=int(input('a=')) b=int(input('b=')) r=int(input('r=')) p=3.14 sa=p*r**2 st=a*b sk=st-sa print('калганы=',sk)
| 2) bardigi=int(input('бардыгы=')) kj=int(input('келгенжок=')) keldi=bardigi-kj katishu=keldi*100/bardigi print('катишу=',katishu,'%')
|
| 3) oklad=int(input('оклад=')) nalog=int(input('налог=')) q=oklad*nalog/100 aqisy=oklad-q print('налогу=',q,'сом') print('иш акысы=',aqisy,'сом')
| 4) bayt=int(input('байт=')) kilo_bayt=bayt/1024 mega_bayt=kilo_bayt/1024 print('кило байт=',kilo_bayt) print('мега байт=',mega_bayt)
|
| 5) s=int(input('секунд=')) saat=(s//3600)%24 s2=s%3600 minut=s2//60 sekund=s2%60 print('саат=',saat) print('минут=',minut) print('секунд=',sekund)
| 6) q=int(input()) q1=q//10 q2=q1*(q1+1) q3=q2*100+25 print(q3)
|
Шартты текшерүү алгоритми үчүн берилген тапшырмалардын жооптору
| 1) import math r=int(input(‘r=’)) x=int(input(‘x=’)) y=int(input(‘y=’)) g=math.sqrt(x**2+y**2) if r print('сыртында') elif rg: print('ичинде') else: print('устундо')
| 2) import math x1=int(input('x1=')) y1=int(input('y1=')) r1=int(input('r1=')) x2=int(input('x2=')) y2=int(input('y2=')) r2=int(input('r2=')) x=abs(x2-x1) y=abs(y2-y1) g=math.sqrt(x**2+y**2) if r1+r2 print("NO") else: print("YES")
|
| 3) n=int(input()) if n%4==0: print("YES") else: print("NO")
| 4) a=int(input('a=')) b=int(input('b=')) c=int(input('c=')) x=int(input('x=')) if x0: print(a) elif x print(b) else: print(c)
|
| 5) a,b,c=map(int,input("koropkanyn jaktary ").split( )) m,k=map(int,input("eshiktin jaktary ").split( )) if (ma or mb or mc) and (ka or kb or kc): print("YES") else: print("NO")
| 6) from math import* a=int(input('a=')) b=int(input('b=')) c=int(input('c=')) if c==sqrt(a**+b**2) or b==sqrt (c**2+a**2) or a==sqrt(c**2+b**2): print("YES") else: print("NO") |
| 7) a=int(input("jyldy kirit=")) if a%4==0 and a%100!=0 or a%400==0: print("Kabisa jyl") else: print("Kabisa jyl emes") | 8) x1,y1=map(int,input("Биринчи чакмактын координатасы ").split()) x2,y2=map(int,input("экинчи чакмактын координатасы ").split()) if (x1+y1+x2+y2)%2==0: print("YES") else: print("NO") |
| 9) x1=int(input()) y1=int(input()) x2=int(input()) y2=int(input()) if x1-x2 or y1-y2: print("YES") else: print("NO")
| 10) x1=int(input()) y1=int(input()) x2=int(input()) y2=int(input()) if abs(x1-x2)==abs(y1-y2): print(“YES”) else: print(“NO”)
|
| 11) x1=int(input()) y1=int(input()) x2=int(input()) y2=int(input()) if abs(y1-y2)==2 and abs(x1-x2)==1 or abs(y1-y2)==1 and abs(x1-x2)==2: print("YES") else: print("NO") | 12) x1=int(input()) y1=int(input()) x2=int(input()) y2=int(input()) if abs(x1-x2)1 or abs(y1-y2)1: print(“YES”) else: print(“NO”)
|
| 13) x1=int(input()) y1=int(input()) x2=int(input()) y2=int(input()) if abs(x1-x2)==abs(y1-y2) or x1==x2 or y1==y2 : print("YES") else: print("NO")
|
|
For оператору бөлүмү боюнча берилген
тапшырмалардын жооптору
| 1) s=0 for i in range(10): n=int(input()) s+=n print(s) | 2) n=int(input()) s=0 for i in range(n): m=int(input()) s+=m w=s/n print(w)
|
| 3) n=int(input()) s=0 for i in range(n): m=int(input()) s+=m**3 print(s)
| 4) n=int(input()) s=1 for i in range(1,n+1): s*=i print(s)
|
| 5) n=int(input()) s=0 for i in range(n): m=int(input()) if m==0: s=s+1 print(s)
| 6) n=int(input()) s=1 for i in range(1,10): s=n*i print(n,'x',i,'=',s)
|
| 7) n=input() s=0 for i in n: if 2018int(n) or int(n) s=0 break s+=int(i) print(s)
|
|
Белгилүү чоңдуктар менен иштөө бөлүмү боюнчо берилген
тапшырмалардын жооптору
1-9 суроолордун жооптору бир гана программада
| n=input() b=n[2] print(b) b=n[-2] print(b) b=n[:5] print(b) b=n[:-2] print(b) b=n[0: :2] print(b) | b=n[1: :2] print(b) b=n[: :-1] print(b) b=n[::-2] print(b) b=len(n) print(b) |
1 өлчөмдү массивдар бөлүмү боюнча тапшырмалардын жооптору.
| a=input().split() for i in range(0,len(a),2): print (a[i],end=" ")
| 2) a=[int(i) for i in input().split()] for i in range(1,len(a)): if (a[i]0 and a[i-1]0) or (a[i]and a[i-1] print (a[i-1],a[i]) break |
| 3) a=[int(i) for i in input().split()] m=max(a) for i in range(len(a)): if m==a[i]: l=i break print(m,l) | 4) a=[int(i) for i in input().split()] for i in range(len(a)): m=a.count(a[i]) if m==1: print(a[i],end=" ")
|
| a=[int(i) for i in input().split()] s=0 for i in range(len(a)-1): for n in range(i+1,len(a)): if a[i]==a[n]: s+=1 print(s)
|
|
2 өлчөмдү массивдер бөлүмү боюнча тапшырмалардын жооптору
| 1) n,m=map(int,input().split()) a=[ ] for i in range(n): row=input().split() for i in range(m): row[i]=int(row[i]) a.append(row)
s = max([e for elem in a for e in elem]) l = 0 h=0 for x in range(n): for y in range(m): if a[x][y] == s: l=x h=y break if a[x][y] == s: break print(l,h)
| 2) n=int(input()) s=[ ] for i in range(n): a,b=map(int,input().split()) s.append(a*b) chonu=max(s) print(chonu)
|
| 3) n,m=map(int,input().split()) a=[ ] for i in range(n): row=input().split() for i in range(m): row[i]=int(row[i]) a.append(row)
s = max([e for elem in a for e in elem]) d=min([e for elem in a for e in elem]) k=s-d print(k)
| 4) n,m=map(int,input().split()) a=[ ] for j in range(n): row=input().split() for i in range(m): row[i]=int(row[i]) a.append(row)
for j in range(n): for i in range(m): if a[j][i]==0: a[j][i]=2 print(a[j][i],end=" ") print()
|
Мазмуну
Эмне үчүн Pithon программалоо тилин үйрөнөбүз..............................3
Python га кирүү. 1-сабак....................................................................5
Программалар менен иштөө..............................................................6
Маалыматтарды чыгаруу оператору..................................................7
рrint операторунун кошумча параметрлери.......................................8
Сандар түшүнүгү...............................................................................9
Math модулунун библиотекасы........................................................10
Input оператору..............................................................................12
Тапшырмалар..................................................................................16
If шартты текшерүү оператору........................................................17
Логикалык амалдар.........................................................................18Шартты текшерүү алгоритми үчүн тапшырмалар.............................21
Циклдик операторлор......................................................................23
While оператору..............................................................................23
Тапшырмалар..................................................................................25
for оператору ..................................................................................25
Тапшырмалар..................................................................................29
Белгилүү чоңдуктар менен иштөө....................................................30
Белгилүү чоңдуктар менен иштөөчү башка методдор.......................32
Тапшырмалар..................................................................................33
Функциялар менен иштөө................................................................34Массивдер менен иштөө..................................................................39
1 өлчөмдуу массивдер.....................................................................39
Массивдин элементтерин киргизүүнүн ыкмалары.............................41
Тапшырмалар..................................................................................44
Эки өлчөмдүү массивдар..................................................................45
Маанилерин киргизүү ыкмалары......................................................47
Тапшырмалар..................................................................................49
Графикалык чиймелер менен иштөө................................................50
Тапшырмалардын жооптору............................................................56
Китепти иштеп чыгүүдө өз жардамдарын көрсөткөндүгү үчүн Ала-Бука райондук билим берүү бөлүмүнүн адиси Б.Акпаралиевке, «Октябрь» жалпы орто билим берүүчү орто мектебинин Кыргыз тили жана адабияты мугалимдери Н.Ж. Эргашевага, Н. Дадабаевага, «Багы Шамал» негизки мектебинин Кыргыз тили жана адабияты мугалими Х. Гойиповага «Т. Жоробаев» жалпы орто билим берүүчү орто мектебинин «Информатика жана ИКТ» предметинин мугалими М.Эргешоваларга ыраазычылык билдиребиз.
65