top of page
Anchor 0
Anchor 1

Јазикот  Python

Денес, Python спаѓа меѓу најпопуларните програмски јазици. Неговата популарност се должи на повеќе факти, а најважни се:

  • Лесен е за учење поради едноставната синтакса слична на англискиот јазик.

  • Бесплатен е.

  • Работи под различни оперативни системи, како: Windows, Linux и др.

  • Програмите во Python се пократки отколку во С++ или Java.

  • Има графика.

  • Може да се прават сите видови апликации, како: економски, инженерски, научни, интернет и др.

  • Има голем број библиотеки за различни области, за кои ќе зборуваме подоцна.

Програмскиот јазик Python го добил името според телевизиското шоу “Monty Python’s Flying Circus”.

Python е дизајниран од Guido van Rossum во 1991 година. Оттогаш до денес се развиени пoвеќе верзии на Python, а денес се користат верзиите Python 2 и Python 3.

Python користи интерпретатор, што значи дека ги интерпретира и извршува наредбите од програмата една по друга. Затоа, може да се користи и како калкулатор, со внесување на изразот во командната линија.

Командната линија започнува со знакот >>>.

>>> |

На пример, ако во командната линија внесеме 1 – 2 + 3 * 4 / 5 и го притиснеме копчето Enter, ќе се отпечати резултатот 1.4.

Со Python може да се изработуваат мали (училишни) програми, но и сериозни комплексни програми (апликации) за фирми, институции и за интернет.           

Пред да започнеме со изучување на програмскиот јазик Python, да напоменеме дека тој може слободно да се преземе од некоја страница на Интернет (најдобро од страницата www.python.org) и да се инсталира на Вашиот компјутер. Но, на интернет има  страници на кои може директно да се пишуваат и извршуваат програми напишани на Python.

Без разлика дали ќе користите интерпретатор на интернет или инсталиран на Вашиот компјутер, прво што ќе се појави на екранот е уредувачот на програми.

На пример, при стартување на Python, на мојот компјутер се јавува следниов прозорец, слика 1.

 

                    Слика 1

Гледаме дека прозорецот има мени со повеќе подменија. Тие содржат команди за работа со програмите. Ваквите апликации се нарекуваат интегрирани работни околини – ИРО (англ. IDE - Integrated Development Environment). Денес, за секој програмски јазик се развиени повеќе ИРО-и. Основна ИРО за Python е IDLE – Integrated Development and Learning Environment. Има и други работни околини, како: Thonny, PyCharm, Vim, Spyder и други. Ние ќе ја користиме интегрираната работна околина IDLE.

Прозорецот на IDLE се состои од лента со име на програмата и лента со подменија со команди.

На пример, ако напишеме:

гледаме дека во лентата за име на програмата пишува *untitled*, што значи дека програмата не е

именувана. Затоа, за да ја зачуваме програмата под некое име, ја задаваме командата Save од

подменито File (или Ctrl + S), слика 2.

Во прозорецот што ќе се отвори (слика 3) го внесуваме името на програмата, на пример py-1 и клик-

нуваме на копчето Save. Во лентата за наслов на прозорецот ќе се појави името на програмата, сли-

ка 4. Гледаме дека пред името на програмата е наведен патот до именикот (директориумот, фолде-

рот) во кој се зачувува програмата. Именикот со програми може да се зададе при зачувување на прог-

рамата. На пример, ние ќе ги чуваме програмите на десктоп во именикот:

C:\Users\Gjorgji\Desktop\Python programi

Од слика 3  се гледа дека наставката на програмите напишани во Python e .py.

                                                                                                                                                                                                                                                   Слика 2


                    Слика 3

Програмата на слика 4 се состои од две линии. На почетокот на првата линија има знак #, наречен хеш (англ. hash), кој означува дека целата ли-нија по него претставува коментар. Коментарите во програмите служат за појаснување на читателот и не се извршуваат.

                    Слика 4

Честопати коментарите се ставаат во иста линија со наредбата. На пример:

Втората линија на слика 4 е наредба за печатење, која се состои од зборот print и во загради се ста-

ва тоа што треба да се отпечати. Во примеров се печати реченицата 'Jas sum od Makedonija', која е

ставена во полунаводници. Ваквите реченици, (зборови) или било какви текстови од знаци, кои може

да бидат и цифри и специјални знаци, се нарекуваат стрингови (англ. strings). 

Програмата се извршува со задавање на командата Run Module (или F5) од подменито Run, слика 5.

                                                                                                                                                                                                                                                              Слика 5

Резултатот од извршувањето на програмата се јавува во посебен прозорец, слика 6.

                    Слика 6

Мени

Константи и променливи

 

Величина е мерка за некоја карактеристика на некој предмет или на некоја појава. На пример, следните карактеристики имаат своја величина: должина, волумен, маса, боја, возраст, брзина и др. Величините имаат вредности кои се изразуваат во мерките или вредностите од некое мно-жество. На пример: cm е мерка за должина, m3 е мерка за волумен, kg е мерка за маса, години е мерка за возраст, m/sek е мерка за брзина итн.

Вредностите со кои се изразуваат величините се нарекуваат податоци. Тоа значи дека податоците имаат вредност. На пример, вредноста на оваа година е 2023.

Во многу случаи податокот, т. е. вредноста на некоја величина не се менува. На пример, вредноста на математичките броеви π = 3.14 и е = 2.71 никогаш не се менува и затоа велиме дека тие се константи (англ. constants). 

Но програмерите во програмите можат да зададат (именуваат) свои константи. На пример, ако во програмата се користи името на нашата држава, тогаш тоа ќе се зададе како константа со име DRZAVA и вредност "Makedonija". (Ако константата е текст (стринг), тогаш се става во наводници или полунаводници.) Или, може да се користи константата MESECI_VO_GODINA, која има вредност 12. Ваквите константи кои ги дефинираат и именуваат програмерите и на кои може да им се доделува вредност се нарекуваат именувани константи (англ. named constants).

За разлика од константите, вредноста на некои величини се менува. На пример, возраста на некој човек, времето во текот на денот, брзината на некој автомобил итн., може да добиваат различни вредности и затоа велиме дека нивните вредности се променливи. Велиме дека годините на брат ми се 10, моите години се 15, годините на кучето се 3 итн. Значи, 10, 15 и 3 се вредности на податокот vozrast, а 6:35, 12:15 или 21:45 се вредности на податокот vreme итн.. Според тоа, vozrast и vreme се податоци кои може да имаат  променлива вредност. Ваквите податоци кои може да имаат променлива вредност се нарекуваат променливи (англ. variables).

Значи, при обработка на податоците со помош на компјутер, константите и променливите мора да имаат свои имиња. Нивните вредности треба да се внесат и да се паметат додека се обработуваат. Забележувате дека имињата на константите (DRZAVA, MESECI_VO_GODINA) се запишани со големи букви, а имињата на променливите со мали букви. (Тоа е вообичаено во повеќето програмски јазици.)  

Ако податокот е константа, тогаш во мемориската локација под зададеното име (на пример, BROJ_PI) вредноста е иста, т. е. не се менува за вре-ме на извршување на програмата.

Ако, пак, податокот е променлив, тогаш вредноста на мемориската локација во која е запишан под некое име (на пример, vozrast) се менува и затоа податокот vozrast се нарекува променлива.

Математичките формули најчесто вклучуваат во себе променливи и константи. Велиме дека во функцијата y = f(x), x и y се променливи затоа што за различна вредност на х се добива различна (може и иста) вредност на у. 

Забележавте дека имињата на константите и на променливите ги пишуваме на латиница: DRZAVA, MESECI, vozrast, BROJ_PI, x, y итн.

Должината на имињата на константите и на променливите во Python е произволна. Тие може да содржат букви, цифри и знакот _ (подвлечена црта), но не смеат да содржат специјални знаци, како: !, @, #, ^  итн. 

Исто така, при задавање на имињата треба да се почитуваат и следниве правила:

  • Името започнува со буква или подвлечена црта _, но не смее да започне со цифра или со специјалн знак.

  • Малите и големите букви се разликуваат. На пример, jas и Jas се различни променливи.

  • Името не смее да содржи празно место.

  • Името не смее да биде резервиран збор.

Програмерска практика е имињата на променливите да асоцираат на нивната примена или содржина. На пример, може да дефинираме промен-лива x = 3.1415, чија вредност е бројот p. Но, многу е појасно ако променливата ја именуваме со brojPi, pi, pi3_14 и слично. Или, ако сакаме да дефинираме променливи за производите во продавница, многу е појасно ако напишеме cenaNaSeker = 100, cena_na_leb = 50 итн. 

Исто како и во математиката, на константите и на променливите можеме да им доделуваме вредности со наредбата за доделување, чија општа форма е:

име = вредност

или

име = израз

Операторот за доделување вредност е =.

Со самото доделување вредност на променливата, се дефинира променливата и се резервира простор за неа во меморијата.

На пример:

m = 3

n = 1 + 2 * 3 – 4 / 5

ZEMJINO_ZABRZUVANJE = 9.81

DA = 'D'

brojPi = 3.14159265

drzava = "MAKEDONIJA"

Ако сакаме да ја видиме вредноста на некоја променлива или на константа, треба да ја отпечатиме со наредбата print(). На пример, со следниве наредби:

print (m)

print (DA, brojPi)

се печати:

3

D 3.14159265

Ако името на променливата или на константата не е правилно, ќе се јави синтаксичкa грешка.

На пример, во следниве наредби:

broj$Pi = 3.14

print (broj$Pi)

грешката е во специјалниот знак $ во променливата и затоа се јавува синтаксичка грешка.

SyntaxError: unexpected EOF while parsing

Веднаш да напоменеме, дека, како и секој програмски јазик, така и Python, има резервирани зборови (наречени и клучни зборови) кои не може да се користат за имиња на константи и на променливи.

Python ги има следниве клучни зборови:

and                    continue                    finally                    is                              raise  

as                       def                               for                           lambda                 return

assert               del                                from                      None                      True   

async                elif                                global                   nonlocal                try      

await                 else                              if                             not                            while

На променливите може да им се доделува вредност кога било и каде било во програмата.

Јазикот Python дозволува доделување вредности на повеќе променливи во една линија.

На пример:

x, y, z = 123, –12.34, 'Makedonija'

x, y = y, x                              # Najednostaven nacin na zamena na vrednostite na dve promenlivi

Забелешка: Python дозволу повеќе наредби во една линија, но разделени со знакот точка и запирка.

Мени

slika 1.jpg

Типови на податоци

 

Со програмските јазици може да се обработуваат различни податоци, чии вредности се изразени со:

  • цели броеви (... ‒2, ‒1, 0, 1, 2, 3…),

  • реални броеви (…‒2.34…, ‒1.89…, 0…, 0.573…, 123.45…),

  • текстови  ('?', '*', '7', '+', 'Macedonia', "Denes e 21-vi vek",

  • слики,

  • звук итн.

Овие податоци се нарекуваат буквални податоци или литерали од англ. literals.

Литералите се поделени на неколку групи, и тоа:

  • Нумерички литерали, во кои има три типа: целобројни (int), реални (float) и комплексни (complex).

  • Текстуални литерали (str), наречени стрингови (од англ. strings), кои содржат каков било текст од знаци ставен во полунаводници, наводници или тројни  наводници.

  • Логички литерали (bool), кои можат да имаат вредност True или False.

  • Специјален литерал е None, кој се користи кога некоја променлива не е зададена (креирана).

Велиме дека податоците може да бидат од различен тип (англ. type). Покрај тип, податоците имаат име и вредност. Значи, податоците ги имаат следниве карактеристики:

  1. Име.

  2. Тип. 

  3. Вредност.

За да видиме од кој тип е некоја променлива или константа, се користи наредбата type() со синтакса:

type (променлива или константа)

На пример, излезот при извршување на следниов програмски сегмент:

x = 5

print ('x = ', x)

print ('\t tip: ', type (x))

ќе се отпечати:

x =  5

                 tip:  <class 'int'>

Да напоменеме дека во програмскиот сегмент се користат двe секвенци (специјални знаци), и тоа: \t и \n. Првата значи дека печатењето ќе продолжи на следната табуларна позиција, а втората дека печатењето ќе продолжи во нова линија.

Податокот што им се доделува на променливите во наредбата за доделување го определува типот на променливата (англ. variable type). Со задавање на името на променливата, таа се декларира, а со доделување вредност, таа се дефинира.

Типовите на податоци во Python се:

 

 

Нумерички:

          Integer                   - целоброен тип (int).

          Float                       - реален тип (float).

          Complex               - комплексен тип (complex).

Boolean                          - логички тип (bool).

Колекции:

          Dictionary             - тип речник (dict).

          Set                           - тип множество (set).

          Секвенци:

                         String      - тип стринг (str).

                         Tuple       - тип енторка (tuple)

                         List           - тип листа (list)

Во Python имињата на променливите се референци (англ. references), т. е. имиња на некои локации во меморијата.

Мени

Аритметички оператори

 

За операции со нумерички типови податоци, се користат следниве аритметички оператори:

+              Собирање.

‒              Одземање и негација.

*               Множење.

/               Делење.

//              Целобројно делење. (Целиот дел од количникот на два цели броја.)

%             Остаток од делење на два цели броја т.н. делење по модул.

**             Степенување.

Стандарден оператор за доделување вредност на променлива е = .

Аритметичките оператори може да се користат во т.н. скратена форма. Тие се наречени сложени оператори за доделување (англ. compound assignment operators).

+=           ‒=           *=           /=            //=           %=         **=

Мени

Вовед во стрингови

 

Стринг е секвенца од знаци. Стринговите се нарекуваат и текстуални податоци бидејќи нивната вредност е текст ставен во полунаводници, на-водници или тројни полунаводници или наводници.

На пример, стрингови се:

'Zdravo, kako ste ?'

"ul.Goce Delcev broj 123."

'''Makedonija

    e

    bibliska zemja.'''

Основните карактеристики на стринговите се:

  • Се запишуваат во полунаводници, наводници или тројни полунаводници или наводници.

  • Секој знак има индекс, почнувајќи од најлевиот, кој има индекс 0.

  • Должината на стрингот е еднаква на бројот на знаци, вклучувајќи ги и празните места.

  • Должината на стрингот во Python не е ограничена, зависи од меморијата на компјутерот.

Вредности на променлива од типот string се доделуваат со операторот за доделување =.

Секој знак во стрингот има индекс, почнувајќи од 0.

Со стринговите може да се вршат разни операции, како:

  • спојување (англ. concatenation) на два стринга,

  • споредување (англ.comparation) на два стринга,

  • одредување должина на стринг (англ. length) и многу други.

Мени

Вовед во листи

 

Листа е низа од вредности. Разликата меѓу стринг и листа е таа што стрингот се состои од знаци, а листата се состои од податоци од различен тип.

На пример, листи се:

[1, 10, –5, 33]

['jas', 'ti', 'toj', 'taa', 'toa']

Листите може да се доделуваат на променливи и да се печатат.

Листата може да се формира и од променливи.

На пример:

cel = 123

zamenka = 'Ti'

broj = 12.3456

lista = [cel, zamenka, broj]

Слично како и кај стринговите, елементите на листите се индексирани со почетен индекс 0.

Мени

Читање на податоци

 

За внесување на податоците во Python се користи посебна функција input().

На пример:

print ('Vnesete broj: ', end='' )

x = input()

Податоците што се внесуваат во Python секогаш се текст.

Кога е потребно да се внесе податок од одреден тип (int, float, bool, str), се користи соодветна функција за конверзија на внесениот податок во ба-раниот тип.

На пример:

vlez = input('Vnesete cel broj: ')

x = int(vlez)

За конверзија на цел број во реален број, се користи функцијата

float(цел_број).

За конверзија на реален број во цел број, се користи функцијата

int(реален-број).

Конверзија на број во стринг се врши со функцијата str().

print(str(1234))

При внесување листа преку тастатура, треба прво да се дефинира празна листа, а потоа да се внесуваат елементите и да се додаваат во листата.

На пример, со следниов програмски сегмент се формира листа:

lista = []

element =int(input('Vnesete cel broj: '))

lista += [element]

element = str(input('Vnesete string: '))

lista += [element]

Мени

Форматирано печатење на податоци

 

Има повеќе начини за печатење на податоците во Python.

Најприменуван е начинот на печатење со т.н. форматиран стринг од литерали (англ. formated string literals).

Наједноставен начин е со означување на местото на кое сакаме да се отпечати вредноста на некоја променлива, со големи загради {}.

На пример:

broj = 1234

decBroj = 5.678

s = 'Jovancevski'

print (f'\n{broj} e cel broj,\n{decBroj} e decimalen broj,\n\'{s}\' e string.')

Во големите загради може да се стават и податоци за бројот на колони, бројот на децимални места и начинот на наслонување на податокот, т. е. форматот на печатење. Тој се разликува за целите и за децималните броеви.

За печатење на цели броеви, форматот е:

f”{променлива: наслонување број_на_колони[d f e s]}

во кој:

  • наслонување е знак и тоа:

         <  лево наслонето,

         >  десно наслонето,

         ^  центрирано.

  • број_на_колони е бројот на колони во кои ќе се отпечати бројот.

  • d, f, e и ѕ се типови на форматот, и тоа:

         d  за цели броеви,

         f  за децимални броеви,

         e  за децимални броеви во експоненцијална форма,

         s  за стрингови.

Мени

Логички тип на податоци и логички оператори

 

Споредбените изрази овозможуваат да се провери релацијата помеѓу две величини. При споредувањето, се користат операторите за споре-дување (англ. comparison operators) или релациските оператори (англ. relational operators):

>    Поголемо                                               < Помало

>= Поголемо или еднакво                    <= Помало или еднакво

== Еднакво                                                   != Различно

Секој споредбен израз е операција со два операнди. Резултатот е една од логичките вредности True или False.

Податоците чија вредност може да биде или True или False, се нарекуваат податоци од логички тип (англ. logical type). Резервираните зборови True и False се специјални константи. Променливите на кои им се доделува вредност од логички тип се нарекуваат логички променливи.

Со податоците од логички тип може да се користат и следните логички  оператори (англ. logical operators):

and         ‒ логичко И

or            ‒ логичко ИЛИ

not          ‒ логичко НЕ

Овие оператори се нарекуваат и условни оператори (англ. conditional operators) бидејќи најчесто се користат при пресметување на вредноста (True или False) на некој посложен логички израз (англ. logical expression).

Логичките оператори се, всушност, функции наречени Булови функции  (англ. boolean functions), по англискиот математичар Џорџ Бул (George Boole) кој ги дефинирал. Буловите функции се дефинирани како што е прикажано во следнава табела.

Пример

Со овој пример се печати табела за логичките функции AND, OR и NOT пресметани во зависност од вредностите на двете логички променливи a и b, слика 7.

                    Слика 7

По извршувањето на програмата, излезот е:

Мени

Контролни наредби за избор

Контролна наредба за избор if

 

Честопати во програмите се бара да провериме дали некој број е позитивен или негативен, дали бројот е парен или непарен, дали на прашањето е одговорено со ДА или со НЕ, кој од два броја е поголем итн.

Наредбите со кои се проверува некој услов се наречени условни наредби (англ. contitional statements).

Основна условна наредба во Python е наредбата if. Нејзината синтакса е:

if услов:

                наредба

во која услов е логички израз. Ако логичкиот израз услов има вредност True, тогаш се извршува наредбата, а ако има вредност False, наредбата се прескокнува. Затоа, if се нарекува наредба за избор, со која се избира (зависно од услов) дали да се изврши наредбата по двете точки или да не се изврши.

На пример, при извршување на следниве наредби:

celBroj = int(input('Vnesete priroden broj: '))

if celBroj < 10:

    print ('Brojot',celBroj,'e ednocifren.')

Вообичаено, по двете точки може да има повеќе наредби и тие се пишуваат вовлечено надесно за една табуларна позиција. Овој начин на пишу-вање на програмите се нарекува назабување (англ. indentation), а се ко­ристи за поголема прегледност и за полесно распознавање на наредбите. (Назабувањето во Python може да се подесува, а обично е 4 места.)

Наредбите по двете точки во if го сочинуваат телото на наредбата if. Тоа мора да има барем една наредба, а ако нема, тогаш се пишува наред-бата pass.

if x == 0:

    pass

Ако телото на наредбата if има повеќе наредби, тие се пишуваат со исто назабување,

за да знае преведувачот до каде е телото.

Наредбата if може да се изрази графички како на слика 8.

Графичкиот приказ се нарекува блок-дијаграм. Блок дијаграмите се цртаат со т.н. UML-јазик (англ. Unified Modeling Language).

Дијаграмот може да го прочитаме на следниов начин: ако е услов точен (има вредност True), тогаш се извршуваат наредбите,  

а ако не е точен (има вредност False), се прескокнуваат.

Од дијаграмот се гледа дека при испитување на условот  дејството продолжува по една од двете гранки. Затоа, наредбата if се

нарекува и наредба за разгранување.

Овој исказ може да се напише и текстуално, слика 9.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               Слика 8

ако услов

                тогаш

                                наредби

крај_ако {услов}

                    Слика 9

Ваков запис се користи при изразување на алгоритмите и се нарекува алгоритамска контролна структура. Оваа алгоритамска контролна структура се именува со ако‒тогаш (англ. if‒then).

Мени

Контролна наредба за избор if‒else

 

Наредбата за избор if може да биде и посложена, кога при неточен услов (False), треба да се изврши друга наредба.

На пример, природниот број може да биде или парен или непарен.

Ако сакаме да напишеме дали природниот број е парен или непарен, тогаш ќе напишеме:

broj = int(input('Vnesete priroden broj: '))

if broj % 2 == 0:

    print ('Brojot',broj,'e paren.')

else:

    print ('Brojot',broj,'e neparen.')                                     

Оваа наредба се нарекува if‒else. Нејзината синтакса е:

if услов:

                наредби1

else:

                наредби2

Графичкиот дијаграм за оваа наредба е даден на слика 10.

                                                                                                                                                                                                                          Слика 10

Дијаграмот може да го прочитаме на следниов начин: ако е услов точен (има вредност True), тогаш се извршуваат наредби1, инаку се извршу-ваат наредби2.

Овој исказ може да се напише и текстуално, слика 11.

ако услов

                тогаш

                                наредби1

                инаку

                                наредби2

крај_ако {услов}

                    Слика 11

Ваквата алгоритамска контролна структура се нарекува ако‒тогаш‒инаку (англ. if‒then‒else).

Мени

Тернарен оператор

 

Тернарниот оператор се користи за поедноставно изразување на наредбата if‒else.

На пример, програмскиот сегмент:

if m > n:

                max = m

else:

                max = n

може да се запише пократко:

max = m if m > n else n

Мени

Вгнездување на контролните наредби за избор if и if‒else

 

Понегогаш е потребно наредбата if или if‒else да е вгнездена (англ. nested) во друга наредба if или if‒else. Притоа, вгнездувањето може да биде во if или во else.

При вгнездување на контролните наредби за избор if и if‒else, треба да се води сметка дека интерпретаторот секое else го поврзува со прет-ходното if.

Мени

Контролна наредба за избор if‒elif‒else

 

Ако условот во една наредба if е False, се испитува условот во следната наредба if. Кога ќе се најде услов со вредност True во некоја наредба if, се извршуваат наредбите од нејзиното тело и се скока на крајот на наредбата if‒elif‒else. Тоа значи дека наредбата if‒elif‒else има само еден излез. Можно е да има точни услови во повеќе наредби elif, но се извршува првата во која ќе се најде точен услов.

Наредбата else не е задолжителна, па затоа наредбата if‒elif‒else може да се нарече и if‒elif.

Мени

Функции

 

Да се потсетиме за функциите од математиката.

На пример, функцијата f(x) = x е линеарна функција, f(x) = x2 е квадратна функција, е функција за наоѓање на квадратниот корен од х итн. f(x) озна-чува правило по кое се пресметува. На пример, правилото за пресметување на квадратот на некој број е тој да се помножи сам со себе, а се запишува со f(x) = x · x или пократко f(x) = х2. Вредноста која ќе се добие за х = 5 е 25 и се означува со некој друг број, на пример у, т. е. у = 25. За секој број х, наречен аргумент на функцијата, се добива вредност на у. Тоа се запишува и со y = f(x).

Во програмирањето, аргументот и вредноста на функцијата се променливи од одреден тип. На пример, при извршување на следниве наредби:

x = 5

y = x ** 2

print ('za x = ',x,'y = f(x) =',y)

се добива:

za x =  5 y = f(x) = 25

Мени

Вградени функции

 

За пресметувања кои често се користат во програмите, како: најголема вредност, најмала вредност, должина на стринг, степенување на број и слично,  Python располага со т.н. вградени функции (англ. built-in functions).

Некои од вградените функции ги користевме во досегашниот текст, како: print(), type(), input(), int(), float() и str().

Ќе наведеме примери за неколку интересни вградени функции.

  • max(), min()      се функции за наоѓање на најголемиот и најмалиот елемент во секвенцата.

  • len()                     е функција за одредување на должината на секвенцата, т. е. на бројот на елементи.

  • pow()                  е функција за пресметување на степенот xy.

  • sum()                  е функција за пресметување на сумата на елементите на секвенцата.

Покрај вградените функции, Python, како и другите програмски јазици, има  многу други функции за проблеми кои често се јавуваат при изработка на разни апликации, како: решавање на квадратна равенка, подредување список на имиња по абецеден редослед, проверка дали некој природен број е прост, цртање на круг, барање песна со одреден наслов и други. Таквите функции се преведени и зачувани под некое име во т.н. модули (англ. modules). Функциите од кој било модул може да се користат во било која корисничка програма кога тие ќе се повикаат во неа преку името на модулот.

Стандардната библиотека на Python (англ. Python Standard Library) содржи над 200 основни модули. Секој модул има свое име, а содржи програми (функции) за одредена намена.

Ќе наведеме некои од модулите:

  • operator               – Функции соодветни на стандардните оператори.

  • math                      – Математички функции.

  • cmath                    – Математички функции за комплексни броеви.

  • string                     – Функции за операции со стрингови.

  • random                – Функции за генерирање на случајни броеви.

Пример:

import math

a = 3; b = 8

c = math.sqrt(a**2 + b**2)

Функцијата sgrt() се повикува од модулот math и се поврзува со него со точка, math.sqrt(). Ваквото поврзување се нарекува нотација со точка (англ. dot notation).

Изразот math.sqrt(a**2 + b**2) се нарекува функциски повик (англ. function call) во кој a**2 + b**2 е аргумент на функцијата. Аргументот може да биде израз или променлива. Аргументот се предава како влез во функцијата, а како резултат се враќа вредност од пресметувањата. Таа вредност се нарекува повратна вредност (англ. return value). Во нашата програма, повратната вредност се доделува на променливата с.

Ако користиме само некои функции од модулот, тогаш не мора да го импортираме целиот модул, туку само потребните функции.

from random import sqrt, pow

Притоа, не е потребно да се користи нотација со точка.

Модулите во Python се организирани во т.н. пакети (англ. packages). Пакетите се, всушност, библиотеки од повеќе модули ставени во еден ди-ректориум.

Python е денес најпопуларен програмски јазик баш поради огромниот број пакети од различни области. На пример, тој има посебни пакети за: графика, музика, аудио/видео, игри, математика, бази на податоци, компјутерски мрежи и многу други. Секој пакет има свое име. На пример: NumPy, pandas, Matplotlib, Pillow и други

Мени

Кориснички дефинирани функции

 

Иако програмскиот јазик Python има многу библиотеки од разни области, честа е потребата корисникот сам да дефинира функција. Таквите функ-ции се нарекуваат кориснички дефинирани функции (англ. user-defined functions) или само кориснички функции (англ. user functions).

Мени

Функции со повратна вредност

 

Библиотечните функции и корисничките функции кои даваат (враќаат) само еден резултат, т. е. само една вредност се нарекуваат функции со повратна вредност (англ. value-returning functions).

Општата форма на дефиницијата на корисничка функција со повратна вредност е:

def име(листа_на_параметри):                                    <-- Заглавие на функцијата

        тело на функцијата (наредби)

return израз

каде:

def                                                  – е клучен збор кој означува дефиниција на функција,

име                                                – името на функцијата,

листа_на_параметри      – ги содржи имињата на параметрите (англ. parameters).

.

Забелешки:

  • Името на функцијата е променлива и за неа важат истите правила како за променливите во Python. (Името започнува со буква или подвлечена црта _, не смее да започне со цифра или со специјалн знак, малите и големите букви се разликуваат, не смее да содржи празно место и не смее да биде резервиран збор.)

  • Листата на параметрите ги содржи имињата на параметрите кои се користат во функцијата.

  • Името и листата на параметри го сочинуваат потписот на функцијата (англ. function signature).

  • израз е резултатот од функцијата (повратна вредност) кој може да биде израз (од променливи и/или константи и/или функции) или една променлива.

Функција со повратна вредност се повикува со наредба со форма:

променлива = име(листа_на_аргументи):

Притоа, аргументите се пренесуваат во функцијата и нивните вредности им се доделуваат на соодветните параметри. По извршување на функ-цијата, повратната вредност се доделува на променлива.

При секој повик на функцијата, се проверува бројот на аргументите и бројот на параметрите и ако тој е различен, се јавува порака за грешка.

Една функција со повратна вредност може да се повика на различни места во програмата, со различни аргументи и на различни начини.

Пример

def pogolemBroj(broj1, broj2):

    '''

    Funkcija koja go naogja

    pogolemiot od dva broja'''

   

    pogolem = broj1

    if broj2 > broj1:

        pogolem = broj2

    return pogolem

 

a = float(input('Vnesete broj: '))

b = float(input('Vnesete drug broj: '))

p = pogolemBroj(a,b)

print ('Pogolem od broevite',a,'i',b,'e',p)

                    Слика 12

Мени

Функции без повратна вредност

 

Има и функции кои не враќаат вредност. Таквите функции се наречени функции без повратна вредност (англ. non value-returning functions). Нив-ниот тип е void. Затоа, се нарекуваат и функции void.

На пример, дефиницијата на функцијата без повратна вредност pecatenje() може да биде:

def pecatenje(poraka, rezultat ):

       print (poraka,rezultat)

       # poraka - e string

       # rezultat – e izlezniot rezultat

Повикот на функција без повратна вредност се разликува од повикот на функција со  повратна вредност, бидејќи функција без повратна вредност се повикува само со своето име и листата на аргументите. Исто така, ваквата функција не може да се повика во друга наредба како што може да се повика функција со повратна вредност.

На пример:

x = 10

pecatenje ("\nRezultatot e: ",x)

Од функција без повратна вредност се излегува автоматски по нејзиното извршување. Но, може да се излезе и од кое било место во телото на функција без повратна вредност со наредбата return без параметар.

Мени

Повикување на функција од друга функција

 

Една функција може да се повика од друга функција.

Пример:

def najgolemOd3Broja(broj1, broj2, broj3):

    pogolem = pogolemBroj(broj1, broj2)

    najgolem = pogolemBroj(pogolem, broj3)

    return najgolem

Мени

Глобални и локални променливи

 

Променливите дефинирани во функциите се нарекуваат локални променливи (англ. local variables), бидејќи тие не може да се користат надвор од функцијата или во други функции.

Со завршување на некоја функција, локалните променливи се губат. Тоа значи дека животот на локалните променливи е времето на извршување на функцијата.

Најдобар начин за променливите дефинирани во една функција да можеме да ги користиме во други функции, е да ги декларираме како гло-бални променливи (англ. global variables) со зборот global.

На пример, со следнава декларација:

global a, b, c

променливите a, b и c може да се користат во сите функции во програмата. Затоа, животот на глобалните променливи е времето на извршување на програмата.

Мени

Подразбирливи аргументи на функција

 

Често некој аргумент при повик на некоја функција е ист при секој нејзин повик. За да не се пренесува таквиот аргумент во секој повик, функцијата може да се дефинира со истиот параметар како подразбирлив аргумент (англ. default argument). 

Пример.

def spisokNaUcenici(imeIprezime, prosek, uciliste = 'Todor Angelevski', mesto = 'Bitola'):

    ...

    print (f"{imeIprezime:<25}", f"{prosek:^10}", f"{uspeh:15}", f"{uciliste:<20}") 

spisokNaUcenici('Aleksandar Makedonski', 4.9)

Подразбирливите аргументи во функциите мора да бидат последни во листата со аргументите, инаку ќе се јави грешка.

Мени

Враќање повеќе резултати од функција

 

Видовме дека од функција со повратна вредност може да се врати само еден резултат, а резултатите пресметани во функција без повратна вред-ност не може да се вратат, туку се печатат во самата функција.

Но, честопати е потребно од една функција да се вратат повеќе резултати. Во Python тоа е овозможено со посебни структури на податоци, како: листи, енторки, речници, множества и др.

Мени

Доделување функција на променлива

 

Во Python името на некоја функција може да се додели на променлива. Таа променлива може да се користи секаде каде што се јавува функ-цијата, без или со аргументи. Тоа е покажано во следниот пример.

На пример,

najGoLem = najgolemOd3Broja

a = float(input('Vnesete prv broj: '))

b = float(input('Vnesete vtor broj: '))

c = float(input('Vnesete tret broj: '))

print ('Najgolem od broevite',a,',',b,'i',c,'e',najGoLem(a,b,c))

Мени

Контролни наредби за повторување

 

Контролните наредби за повторување се користат тогаш кога е потребно иста група наредби да се извршат повеќепати. Едно извршување на на-редбите се нарекува еден циклус или една итерација, слика 13. Затоа, таквото повторување на извршувањето на група наредби се нарекува цик-лично повторување или итеративно повторување. 

циклус

       наредба А    

       наредба Б

                ...

       наредба  М

крај_циклус

          Слика 13

 Мени

Контролна наредба while

 

Општата форма на наредбата while е:

while услов:

                наредби (тело на наредбата while)

Пред почетокот на секој циклус, се испитува дали е исполнет услов-от, кој претставува логички израз со две вред­ности: True (точно) или False (неточно). Додека е ис­пол­нет (точен) услов-от, се извршуваат наредбите од циклусот и дејството се враќа на почетокот од циклусот. Кога во не­кое испитување на услов-от ќе се констатира дека тој не е испол­нет (не е точен), се прескокнува телото на наредба while и дејството продолжува со следната наредба.  

Бидејќи услов-от се испитува пред почетокот на секој циклус, може да се случи услов-от да не е исполнет уште при првото испитување и притоа, е можно да не се изврши ниту еден циклус.

Пример: Збир на првите 10 природни броеви.

zbir = 0

broj = 1

while broj <= 10:

       zbir = zbir + broj

       broj = broj + 1

print ('Zbirot na prirodnite broevi od 1 do 10 e',zbir)

Програмата може да ја прочитаме на следниов начин:

Додека условот (broj <= 10) има вредност True, се извршува циклусот, а кога условот (broj <= 10) ќе добие вредност False, циклусот не се изврши, туку програмата продолжува  со следната наредба.

Битно за наредбата while е што не е познат однапред бројот на циклуси кои треба да се извршат, туку тоа зависи од условот.

Да ја објасниме наредбата:

broj = broj + 1

Забелешка: Ваква наредба х = х + 1 во математиката не е можна.

Прво се пресметува изразот на десната страна, на тој начин што се собира моменталната вредност на променливата broj со вредноста 1 и добиениот збир ѝ се доделува како нова вредност на променливата broj.

Ако вредноста на променливата се зголемува за 1, велиме дека променливата се инкрементира (англ. incremented)

Мени 

Контролна наредба for

 

Понекогаш е потребно иста група наредби да се изврши за сите елементи од некоја низа, множество, стринг или елементи во некој опсег (англ. range). На пример, при собирање на природните броеви од 1 до 10, се знае дека треба секој елемент од опсегот [1,10] да се додаде на збирот. За-тоа, треба да се извршат 10 циклуси. Односно, познат е бројот на циклуси кои треба да се извршат.

За задачи во кои е познат бројот на циклуси кои треба да се извршат, се користи оваа контролна наредба, со синтакса:

for променлива in опсег(n):

      наредби (тело на наредбата for)

Циклусите се бројат со променлива, која добива вредности од 0 до n-1. Зборовите for и in се резервирани зборови.

Програмата за збирот на првите 10 природни броеви со наредбата for е:

zbir = 0

for broj in range(11):

    zbir = zbir + broj

print ('Zbirot na broevite od 1 do 10 e',zbir)

Функцијата range() враќа вредности 0, 1, 2,...10, кои се доделуваат на променливата broj во секој циклус.

 Мени

Контролни наредби за скок

               

Во итеративните команди while и for, бројот на итерации е конечен. Во наредбата while, итерациите се извршуваат додека е исполнет некој услов, а во наредбата for додека има елементи во некој опсег или во некоја листа.

Ако во наредбата while се случи условот да е постојано исполнет, или во наредбата for  опсегот или листата да се менуваат во телото на наред-бата for и тие да не се конечни. тогаш доаѓа до бесконечно повторување (англ. infinite loop) на циклсите.  

На пример, во следнава наредба while има бесконечно повторување:

while 1 < 2:

      print ('Kako ste?')

бидејќи условот 1 < 2 е постојано точен (True).      

Еден пример со наредбата for е:

lista = [0]

for i in lista:

    print(i,end = ' ')

    lista.append(i+1)

Се добива излез:

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...

кој претставува бесконечно повторување на циклусите.

За прекинување на бесконечното повторување или за прескокнување на тековниот циклус, се користат контролните наредби за скок break и continue. 

 Мени

Контролна наредба break   

 

Контролната наредба break се користи за излез од контролните наредби со бесконечен број циклуси, т. е. за прекинување на повторувањата. Затоа наредбата се нарекува break.

Пример

# Kvadraten koren od broj

import math

while True:

    print ('Vnesete realen broj: ', end = '')

    x = float(input())

    if x < 0:

        print ('Brojot e negativen. Prekinuvam.')

        break

    print ('Kvadraten koren od',x,'e',math.sqrt(x))

Мени 

Контролна наредба continue     

 

Контролната наредба continue се користи за излез од телото на контролните наредби while и for, кога е потребно да не се доврши тековниот циклус, туку да се продолжи со  следниот циклус. Со скок на крајот на тековниот циклус и продолжувањето со следниот се продолжува со повто-рувањето на циклусите и затоа оваа наредба се нарекува  continue.

Пример

import math

print ('Za kraj vnesete 999999')

x = 0

while x != 999999:

    x = float(input('Vnesete realen broj. '))

    if x < 0:

        print ('Brojot e negativen i nema kvadraten koren.')

        continue

    print ('Kvadraten koren od',x,'e',math.sqrt(x))

Мени 

Вгнездување на контролните наредби while и for

               

Во некои програми потребно е да се употребат повеќе наредби за повтору­вање. Притоа, некоја наредба може да се наоѓа во друга. Тоа се нареку-ва вгнезду­вање (англ. nesting).

При вгнездување на наредбите за повторување, целото тело на едната наредба  мора да се наоѓа во телото на другата наредба, односно не смее да има сечење (преклопување) на телата, како на слика 13. На слика 14а, б и в се дадени дозволени начини на вгнездување на наредбите за пов-торување.

 

Мени

Стрингови

Во поднасловот Вовед во стрингови се запознавме со поимот стринг (англ. string). Стринговите се секвенци од знаци, кои содржат букви, цифри и специјални знаци.

Најчести операции со стрингови се:

 

Спојување на стрингови   +

prezime = 'Delcev Makedonski '

praznoMesto = ' '

ime = 'Goce'

najgolemMakedonec = ime + praznoMesto + prezime

 

Повторување на стрингови   *

print (3*ime )

 

Должина на стринг   len()

len() е функција за пресметување на должината на стринг (број на знаци).

dolzina = len(ime )

 

Пристап до елемент на стринг   []

tatkovina = 'MAKEDONIJA'

pettaBukva = tatkovina[4]

Индексите на знаците во стрингот може да бидат и негативни, почнувајќи од последниот знак кој има индекс ‒1, претпоследниот ‒2 итн.

 

Издвојување на потстринг од стринг со отсекување   [:]

Издвојувањето се прави со употреба на операторот за отсекување (англ. slice operator), кој се претставува со две точки :  и тоа.

[i:j] - се отсекува потстринг од i-та позиција до (j-1)-ва позиција.

[i:] - се отсекува потстринг од i-та позиција до крај.

[:j] - се отсекува потстринг од 0-та позиција до (j-1)-ва позиција.

programer = 'Sakam da bidam programer'

samoProgramer = programer[15:]

               

Проверка дали еден стринг е потстринг на друг стринг   in/not in

Се користи операторот за припадност in или за неприпадност not in.

Опшатата синтакса е:

стринг in друг_стринг

стринг not in друг_стринг

 

Споредување на стрингови   is/is not

При споредување на стринговите, може да се користат релациските оператори, и тоа:

==  еднакво         

!=  различно       

<   помало           

>   поголемо        

<=  помало или еднакво  

>=  поголемо или еднакво

is             e

is not      не е

 

Претворање на малите букви во големи   upper()

jas = 'Gjorgji Jovancevski'

golemJas = jas.upper()

 

Претворање на големите букви во мали    lower()

jas = 'Gjorgji Jovancevski'

malJas = jas.lower()

 

Индекс на првото појавување на потстринг во стринг   find()      rfind()

Повратната вредност на функцијата find() е индексот на првото појавување на стрингот од почетокот нанапред, а на функцијата rfind() е индексот на првото појавување на стрингот од крајот наназад.

Синтаксата на наредбата find() e:

find(потстринг,почетна_позиција,крајна_позиција)

 

Отстранување на празните места од почетокот и од крајот на стрингот   strip()      rstrip()

Со функцијата strip(), се отстрануваат празните места од почетокот и од крајот на стрингот, а со функцијата rstrip() се отстрануваат само празните места од крајот на стрингот.

programer = '   Sakam da bidam programer       '

tocenProgramer = programer.strip()

               

Број на појавувања на потстринг во стрингот   count()

Синтаксата на функцијата е:

стринг.count(потстринг, почеток, крај)

каде:

стринг                ‒ стрингот во кој се бара појавувањето на потстринг-от.

потстринг       ‒ потстрингот кој се бара.

почеток              ‒ почетната позиција за барање. (Ако не се наведе, се подразбира 0.)

крај                        ‒ крајната позиција до која се бара. (Ако не се наведе, се подразбира

                                   крајот на стринг-от.)

 

Замена на потстринг во стрингот   replace()

Функцијата replace() има синтакса:

стринг.replace(потстринг, нов_стринг, број)

Во стринг-от се заменуваат првите број потстринг-ови со нов_стринг. Ако не се наведе број, се заменуваат сите потстринг-ови.

 

Форматирано печатење на стрингови   format()

Функцијата format() има синтакса:

стринг.format(променлива1,променлива2,...)

стринг-от содржи онолку големи загради колку што има променливи.

Пример:

ime = 'Gjorgji'

prezime = 'Jovancevski'

string_izjava = 'Jas sum {} {}'

print (string_izjava.format(ime,prezime))     

Постои и посебен оператор за форматирање (англ. format operator) на стрингови  %ѕ.

ime = 'Gjorgji'

prezime = 'Jovancevski'

string_izjava = 'Jas sum {} {}'

print (string_izjava  % (ime,prezime))

Мени

Колекции

 

Во објаснетите типови на податоци гледаме дека на променливите од кој било тип може да им се додели само една неделива вредност. Затоа, овие типови на податоци често се нарекуваат неструктурирани типови на податоци.

На стринговите може да им се додели една вредност која се состои од повеќе стрингови од по еден знак. (Во јазикот Python нема знаковен тип на податоци char, како во некои други програмски јазици.) Затоа, стринговите се структурирани од повеќе податоци и се нарекуваат структуриран тип на податоци.

Но, понекогаш се јавува потреба на една променлива да ѝ се доделат повеќе податоци од различен тип, односно променливата да биде од струк-туриран тип.

Во јазикот Python се дефинирани структурирани типови на податоци наречени колекции (англ. collections), и тоа:

  • Листа (англ.  list) тип list.

  • Енторка (англ. tuple) тип tuple.

  • Речник (англ. dictionary) тип dict.

  • Множество (англ. set) тип set.

Главна карактеристика на колекциите:

  • променливост                                     - листи и множества

  • подреденост                                        - листи, енторки и речник

  • елементи со иста вредност         - листи и енторки

Мени

Листи

 

Листите се низи од елементи од ист или од различен тип. Листата се означува со средни загради, во кои се наведуваат елементите разделени со запирки.

 ['Gjorgji Jovancevski', 1963, 'Budimirci', 176, 87.5, ['Python', 2021], [] ]

Ознаката [] означува празна листа (англ. empty list).

Од примерот гледаме дека елемент на листа може да биде друга листа. Тоа се нарекува вгнездување на листи (англ. list nesting).

Листите може да се доделуваат на променливи и да се печатат само преку своето  име.

lista = [1,2,3,4,5]

print (lista)

Ќе наведеме неколку функции за работа со листи.

 

Превртување на листа   reverse()

lista = [1,2,3,4,5]

prevrtenaLista = lista.reverse()

 

Проверка дали некој податок се наоѓа во листата   in

if податок in листа:

 

Отсекување делови од листа   [:]

Делови од листата (подлисти) се отсекуваат со операторот за отсекување.

lista = [1,2,3,4,5]

podlista = lista[3:]

 

Промена на вредноста на елемент од листа

lista = ['Jas','Ti','Toj','Taa','Toa']

lista[2] = 'Nikoj'

 

Формирање (креирање) на листа   range()

lista1 = list(range(11))

lista2 = list(range(2,10,2))

 

Спојување на листи   +

lista1 = [1,2,3,4,5]

lista2 = [4,3,2,1]

lista = lista1 + lista2

 

Повторување (мултиплицирање) на листа   *

lista = ['Ja sakam Makedonija', 2023]

lista3pati = lista * 3

               

Бришење елемент од листа   del

lista = ['Jas','Ti','Toj','Taa','Toa']

del lista[1]

 

Отстранување елемент од листа ако е познат индексот   pop()

lista = ['Jas','Ti','Toj','Taa','Toa']

x = lista.pop(2)

               

Отстранување елемент од листа ако е позната вредноста   remove()

lista = ['Jas','Ti','Toj','Taa','Toa']

lista.remove('Taa')

               

Збир на елементите на бројна листа   sum()

lista = [1,2,3,4,5]

zbir = sum(lista)

 

Најголем и најмал елемент во листа   max()     min()

lista = [1,2,3,4,5]

najgolem = max(lista)

najmal = min(lista)

 

Индекс на првото појавување на елемент во листа   index()

Со функцијата index(), се добива индексот на првото појавување на одреден елемент во листата.

lista1 = [1,2,3,4,5]

k = lista.index(4)

 

Број на исти елементи во листа   count()

Оваа функција го враќа бројот на елементи со иста вредност во листата.

lista1 = [1,3,2,3,4,3,5]

k = lista.count(3)

 

Додавање елемент на крајот од листата   append()

lista = ['Jas','Ti','Toj','Taa','Toa']

lista.append('Nie')

 

Додавање листа на крајот од листата   extend()

lista = ['Jas','Ti','Toj','Taa','Toa']

lista.extend(['Nie','Vie','Tie'])

 

Вметнување елемент во листа   insert()

lista = ['Jas','Ti','Toj','Taa','Toa']

lista.insert(3,'i toj')

 

Сортирање на листа   sort()                      

lista = [17,4,23,56,17,45,89]

lista.sort()

print ('Sortirana lista vo rastecki redosled:', lista)

lista.sort(reverse = True)

print ('Sortirana lista vo opadnuvacki redosled:', lista)

 

Конверзија на стринг во листа од знаци   list()

s = 'Avtor Gjorgji Jovancevski'

sVoListaZnaci = list(s)

 

Конверзија на стринг во листа од зборови   split()

s = 'Avtor Gjorgji Jovancevski'

sVoListaZborovi = s.split()

 

Конверзија на листа во стринг   join()

listaJas = ['Avtor', 'Gjorgji', 'Jovancevski']

s = ' '.join(listaJas)

 

Ќе наведеме уште неколку поедноставни функции:

len(листа)              ‒ ја дава должината на листата, т. е. бројот на елементи во листата.

листа.clear()         ‒ се брише содржината на листата, т. е. таа станува празна листа.

листа.copy()         ‒ се копира листа во друга листа. Пример: lista2 = lista.copy().

листа.reverse()    ‒ се превртува листа, па крајот станува почеток.

 

Вгнездени листи

 

Во една листа може да има вгнездено друга листа.

podatoci = ['Gjorgji',1963]

zanimanja = ['sah','karti','lov']

jas = [podatoci,zanimanja]

 

Скратено генерирање на листа

 

Има полесен начин за генерирање на листа ако има правило по кое се генерираат елементите на листата.

broevi = [i * i for i in range(2, n + 1)]

Мени

Енторки

 

Понекогаш е потребно да се запамтат податоци од различен тип чии вредности не се менуваат. На пример, роденденот на едно лице, имињата на родителите, местото на раѓање и сл.

Во Python е воведена посебна структура за памтење на непроменливите податоци, наречена енторки (англ. tuples). На променлива од енторка ѝ се доделува податоци ставени во мали загради и разделени со запирки. Малите загради не мора да се стават, но податоците мора да се одделени со запирки.

jas = 'Gjorgji','Jovancevski', 1963, 'Budimirci' ,2106963451234

prazna = ()

Ако енторката се состои од еден елемент, мора на крајот да се стави запирка.

taa = 'Jana',   # Se definira entorka so eden element            

Енторките може да имаат и елементи со иста вредност.

ocenki = 'Makedonski',4,'Matematika',5,'Informatika',5,'Fizika',4

За проверка дали постои даден податок во енторка, се користи операторот in, како и во листи.

Ќе наведеме некои поважни функции за работа со енторки.

Креирање на енторка   tuple()

Покрај тоа што енторка се креира со операторот за доделување, таа се креира и со функцијата tuple().

Аргументот на функцијата tuple() може да биде број, стринг, листа или енторка.

jas = tuple('Gjorgji')                             # Argument string

ti = tuple([2,-5,3])                                 # Argument lista

toj = tuple(('Mile',1982,9.85))            # Argument entorka

               

Индексирани енторки                                  

Енторките се индексирани, почнувајќи од првиот елемент со индекс 0. Исто така, должината на енторката се добива како повратна вредност на функцијата len().

Индексите на елементите се и негативни, почнувајќи од последниот со индекс -1, претпоследниот -2 итн.

Ако сакаме да ја промениме содржината на некој елемент во енторката, ќе се јави грешка.

 

Отсекување делови од енторка   [:]

Слично како кај листите и кај енторките може да се користи операторот за отсекување.

jas = 'Gjorgji','Jovancevski',1963,'Budimirci',2106963451234

imeIprezime = jas[0:2]

                               

Замена на содржините на две енторки

Две енторки може да си ги заменат содржините.

skopje = 'Skopje',41.60,21.26,475000

bitola = 'Bitola',41.00,21.20,93000

skopje, bitola = bitola, skopje

 

Споредување на енторки

Две енторки може да се споредуваат елемент по елемент почнувајќи од првиот елемент.

if skopje < bitola:

               

Конверзија на енторка во листа

Секоја енторка може да се конвертира во листа со функцијата list().

skopjeLista = list(skopje)

               

Конверзија на листа во енторка

Секоја листа може да се конвертира во енторка со функцијата tuple().

grad = tuple(skopjeLista)

 

Промена на елемент на енторка

Иако главно својство на енторките е дека нивната содржина е непроменлива, тие  може да се променат со претходна конверзија во листа и про-мена на елементот на листата.

               

Додавање елемент во енторка

Елемент во енторка може да се додаде со претходно конверзија во листа. Елеметот се додава во листата и потоа листата се конвертира во енторка.

 

Бришење елемент од енторка   del

Се врши конверзија на енторката во листа, се брише елементот и листата се конвертира во енторка.

 

Спојување на енторки   +

Две енторки може да се додадат една на друга со операторот +.

 

Повторување (мултиплицирање) на енторка   *

Една енторка може да се повторува (мултиплицира) цел број пати со операторот *.

 

Распакување на енторка

При креирање на енторка велиме дека вршиме „пакување“ на податоците.

Енторка може да се „распакува“ на тој начин што нејзините елементи ќе се доделат на толку променливи колку што е должината на енторката.

jas = 'Gjorgji','Jovancevski',1963,'Budimirci',2106963451234

a,b,c,d,e = jas

 

Збир на елементите на бројна енторка   sum()

За наоѓање на збирот на елементите на енторка (ако се тие броеви), се користи функцијата sum().

entorkaOdBroevi = 1,2,3,4,5

zbir = sum(entorkaOdBroevi)

               

Број на исти елементи во енторка   count()

Со оваа функција, се добива бројот на појавувања на даден елемент во енторка.

ocenki = 'Makedonski',4,'Matematika',5,'Informatika',5,'Fizika',5,'Hemija',4

i = 5

brojNa5_ki = ocenki.count(5)

 

Индекс на првото појавување на податок во енторка   index()

Со функцијата index(), се добива индексот на првото појавување на даден елемент во енторка.

ind = ocenki.index(5))

               

Конверзија на стринг во енторка и на енторка во стринг   tuple()     join()

s = 'Jas sum od Makedonija'

sEntorka = tuple(s)

s1 = ''.join(sEntorka)

               

Спротивна енторка   reversed()

Со оваа функција, се добива реверзна (со спротивен редослед) енторка.

broevi = 1,7,-2,4,3,-3

broeviSprotivno = tuple(reversed(broevi))

 

Сортирање на енторка   sorted()

Оваа функција се користи за сортирање енторка во растечки или во опаднувачки редослед. Повратната вредност е листа од сортирани елемен-ти. Ако е потребно листата да се користи како енторка, треба да се конвертира со функцијата tuple().

entorka = 2,-3,5,-12,7,-1,9

listaRastecka = sorted(entorka)

listaOpadnuvacka = sorted(entorka, reverse=True)

 

Вгнездени енторки

 

Елемент на една енторка може да биде друга енторка, т. е. во една енторка може да има вгнездено друга енторка.

entorkaJas = 'Gjorgji','Jovancevski',1963

entorkaTi = 'Silvi',1973

entorka = entorkaJas, entorkaTi

Пристапот до елементите на вгнездената енторка е преку индексите.

Мени

Множества

 

За множества (англ. sets) се учи во основно училиште. Знаеме дека множествата се состојат од елементи кои не се подредени и во кои нема два исти елементи.

Множествата во Python се ставени за да се вршат математичките операции: унија, пресек, разлика и други.

Стандардни операции со множества се: унија, пресек, разлика и симетрична разлика.

Да се потсетиме од математиката.

  • Унија

A∪B е множество на сите елементи кои се наоѓаат или во А или во В или во двете.

  • Пресек

A∩B е множество на сите елементи кои се наоѓаат и во А и во В.

  • Разлика

A∕B е множество на сите елементи од А кои не се наоѓаат во В.

  • Симетрична разлика

A∆B е множество на сите елементи од А кои не се наоѓаат во В и сите елементи од В кои не се наоѓаат во А.

Функцијата за:

  • унија е                                                     union(),

  • пресек е                                                 intersection(),

  • разлика е                                               difference()

  • симетрична разлика е                    symmetric_difference().

Множество се декларира со ставање на елементите во големи загради. Елементите се одделуваат со запирки.

praznoMnozestvo = set()                   # Prazno mnozestvo se deklarira samo so set()

licniZamenkiMnozestvo = {'Jas', 'Ti','Toj', 'Taa', 'Toa'}

При декларација на множество, ако има два и повеќе исти елементи, тоа се формира само со еден од истите елементи.

При печатење на множество, редоследот на елементите не е секогаш ист.

Ќе наведеме неколку основни функции за операции со множества.

 

Додавање елемент во множество   add()

mnozestvoGjorgji = {'Gjorgji', 1963, 'redoven profesor'}

mnozestvoGjorgji.add('Informatika')

 

Отстранување и бришење елемент од множество   remove()     discard()

licniZamenkiMnozestvo = {'Jas', 'Ti','Toj', 'Taa', 'Toa'}

licniZamenkiMnozestvo.remove('Toj')

taa = 'Taa'

licniZamenkiMnozestvo.discard(taa)

 

Бришење на сите елементи од множеството   clear().

licniZamenkiMnozestvo.clear()

 

Минување низ множество   in

for i in licniZamenkiMnozestvo:

    print(i)

 

Генерирање на множество   range()

broevi = set(range(11))

broevi10 = set(range(10,101,10))

 

Креирање множество од стринг

samoglaski = 'aeiou'

samoglaskiMnozestvo = set(samoglaski)

               

Претворање на множество во листа

Бидејќи множеството е неподредено, ако сакаме да го обработуваме како подредена колекција, треба да го претвориме во листа.

listaLicZam = list(licniZamenkiMnozestvo)

listaLicZamSortirana = sorted(licniZamenkiMnozestvo)

.              

Претворање на листа во множество

listaLica = ['Gjorgji','Jovana', 'Jana','Bale', 'Mihaela', 'Teo', 'Jana']

mnozestvoLicZam = set(listaLicZam)

 

Претворање на енторка во множество и обратно

entorka = 3,5,4,-2,1,5,4

mnozestvoEntorka = set(entorka)

entorkaDruga = tuple(mnozestvoEntorka)

               

Проверка дали некој податок се наоѓа во множеството   in

ovosje = {'jabolko', 'krusa', 'sliva', 'praska'}

krusa = 'krusa'

if krusa in ovosje:

 

Подмножество и надмножество   issubset()     issuperset()

krusa_praska = {'krusa', 'praska'}

podmnozestvo = krusa_praska.issubset(ovosje))

nadmnozestvo = ovosje.issuperset(krusa_praska)

 

Сортирање на множество   sorted()

При сортирање на множество излезот е сортирана листа.

licniZamenkiMnozestvo = {'Jas', 'Ti','Toj', 'Taa', 'Toa'}

licniZamenkiMnozestvo_listaSort = sorted(licniZamenkiMnozestvo)

licniZamenkiMnozestvo_listaSortRev = sorted(licniZamenkiMnozestvo, reverse = True)

Мени

Мапирање

 

Поимот функција во математиката се дефинира како правило за пресликување на едно множество во друго.

На пример, со функцијата f(n) = , се пресликува множеството природни броеви N во множеството реални броеви R. Тоа се означува со f: N ® R.

Пресликувањето се нарекува и мапирање (англ. mapping), што значи дека функцијата го мапира (пресликува) секој елемент од едното множество во елемент во другото множество, т. е. за секој елемент од N има слика во R.

Во сите структури на податоци во Python кои се изброиви: стрингови, листи и енторки се врши пресликување на множеството природни броеви плус 0 (множеството на ненегативни цели броеви), во друго множество. Во овие структури, минувањето низ елементите на структурата се врши преку индексите.

 

Функцијата map()

 

Во Python е воведена посебна функција за минување низ елементите на изброиво множество т.н. map().

Синтаксата на функцијата е:

map(функција, колекција)

каде:

функција               - е директно зададена функција или посебно дефинирана корисничка

                                      функција, која  се применува на секој елемент од колекцијата.

колекција              - е изброива колекција како: стринг, листа, енторка или множество.

Повратната вредност од функцијата map() може да се конвертира во листа, енторка или множество.

Функцијата map() може да се примени истовремено на повеќе колекции.

Мени

Речници

 

На сите ни е познат поимот „речник“ (англ. dictionary).  

Речниците се користат за барање на некој збор, а се организирани по азбучен или абецеден ред.

Кога се бара некој збор во речник, се бара под буквата која е почетна буква во зборот. На пример, зборот „речник“ се бара под буквата „р“.

Слично, ако има список на луѓе со резултати по азбучен ред, тогаш резултатот за „Јованчевски Ѓорѓи“ ќе го бараме почнувајќи од првиот чие презиме започнува со буквата „Ј“.

Од реченото, се гледа дека буквата „р“ и буквата „Ј“ претставуваат некакви „клучеви“ по кои се бара.

Елементите на структурата речник се парови клуч – вредност.

Ваквата структура може да се користи во повеќе практични примери, како во список на:

  • имиња и оценки,

  • производи и цени,

  • градови и број на жители,

  • држави и главни градови,

  • книги и автори,

  • зборови од еден јазик и зборови од друг јазик, итн.

Ваквиот начин на поврзување на едно множество податоци со друго се нарекува пресликување, т. е. мапирање.

На пример, мпирањето на државите и главните градови може да се изрази на следниов начин:

'Makedonija' ➝ 'Skopje'

'Bugarija' ➝ 'Sofija'

. . .

'Albanija' ➝ 'Tirana'

Мапирањето се врши меѓу две множества, при што првото множество се нарекува клучеви (англ. keys), а второто множество се нарекува вредности (англ. values). Затоа се вели дека во речниците се врши мапирање помеѓу множеството клучеви и множеството вредности. Таквото мапирање се нарекува пар клучеви – вредности (англ. key – value pair).

За креирање празен речник речник, во Python се користи функцијата dict().

glavenGrad = dict()

Додавање елемент во речникот се врши со задавање на клучот и на вредноста.

glavenGrad['Makedonija'] = 'Skopje'

Речникот може да се декларира и на тој начин што паровите одделени со запирки се ставаат во големи загради.

ceni = {'leb':45, 'mleko':50,' seker':120}

Речникот може да се декларира и преку листа од енторки.

poeni = dict([('Gjorgji',63), ('Ana',78), ('Mile',89)])

На клучевите на речникот може да им се доделат вредностите при самото декларирање.

ocenki = dict(makedonski = 3, matematika = 4, informatika = 5)

Речниците немаат индекси. Печатењето елемент од речникот се врши само преку неговиот клуч.

Речниците немаат два пара со ист клуч, т.,е. сите клучеви мора да се различни. Вредноста на некој  клуч може да се промени, но не и клучот.

Вредностите на елементите во речникот може да бидат од кој било тип.

Ќе наведеме неколку функции за работа со речници.

 

Листа на клучеви во речникот   keys()

Со функцијата keys(), може да се отпечатат сите клучеви од речникот.

print (ocenki.keys())

 

Листа на вредности во речникот   values()

За листање на сите вредности од речникот, се користи функцијата values().

print (ocenki.values())

               

Листа на елементи во речникот   items()

print (ocenki.items())

 

Должина на речникот   len()

print (len(ocenki))

 

Вредноста на даден клуч   get()

print (ocenki.get('informatika'))

 

Проверка дали даден клуч се содржи во речникот   in

if 'informatika' in ocenki:

 

Додавање елемент на крајот од речникот   update()

licniZamenki = {'jas':'Gjorgji','ti':'Silvija'}

licniZamenki.update({'toj':'Mile'})

               

Отстранување елемент од речникот   pop()

licniZamenki = {'jas':'Gjorgji','ti':'Silvija','toj':'Mile'}

licniZamenki.pop('ti')

 

Отстранување на последниот додаден елемент од речникот   popitem()

knigi = {'Stale Popov': 'Kales Angja','Grigor Prlicev':'Serdarot'}

knigi.popitem()

               

Бришење елемент од речникот   del()

del licniZamenki['ti']

del licniZamenki

 

Бришење на содржината на речникот   clear()

Оваа функција служи за бришење на содржината на речникот и тој останува празен речник {}.

clear licniZamenki

               

Копирање на речник   copy()

lektira = knigi.copy()

 

Проверка на празен речник   bool()

Синтаксата на функцијата е:

bool(име_на_речникот)

 

Конверзија на речник во листа

ceni = {'leb':45,'mleko':50,'seker':120}

listaNaKlucevi = list(ceni.keys())

listaNaVrednosti = list(ceni.values())

Ако ги отпечатиме индексите на листата на клучеви или на листата на вредности:

for i in range(len(listaNaKlucevi)):

    print (i,end=' ')

ќе добиеме:

0 1 2

Може да се креира листа од елементите на речникот и да се искористи за печатење на кој било елемент од речникот.

 

Сортирање на речник   sorted()

Речникот може да се сортира по клучевите или по вредностите, растечки или опаднувачки.

 

Вгнездени речници

jas = {'ime':'Bale', 'godina':1976},

taa = {'ime':'Zana', 'godina':1986},

toa = {'ime':'Teo', 'godina':2014}

semejstvo = {'tatko':jas, 'majka':taa, 'dete':toa}

 Мени

Датотеки

 

Терминот датотека (англ. file) го означува секое множество податоци зачувани на надворешни мемории (диск, CD, USB,  SSD и други) под едно име. Тие може да содржат различни податоци, како: текст, броеви, слики, звук, видео итн.

Читање податоци од датотека и запишување податоци во датотека се врши на ист принцип како што се читаат и запишуваат податоци преку терминалот (тастатурата и екранот). Оперативниот систем ги третира тастатурата и екранот како посебни (стандардни) датотеки за влез и за излез. При читањето, податоците се читаат од датотеката и се запишуваат во меморијата, а при запишувањето, податоците се читаат од меморијата и се запишуваат во датотеката.

Податоците во датотека се запишуваат во т.н. записи (англ. records).

Сите записи се состојат од ист број и тип податоци, наречени полиња (англ. fields), одделени со празно место. На пример, реченицата:

Goce Delcev maski 1872 1903

има пет полиња, од кои полињата за име, за презиме и за пол се текстуални полиња (стрингови), а другите две полиња се од целоброен тип.

Секој запис во датотеката завршува со маркер за крај на записот (англ. end-of-record marker, EOR marker).

Исто така, секоја датотека завршува со маркер за крај на датотеката (англ. end-of-file marker, EOF marker).

Датотеките може да бидат текстуални датотеки (англ. text files) или бинарни датотеки (англ. binary files). Во текстуалните датотеки се запишува и се чита знак по знак, а во бинарните датотеки се запишува и се чита бајт по бајт.

Текстуалните и во бинарните датотеки во кои се запишува редно, т. е. секвенцијално,  се нарекуваат секвенцијални датотеки (англ. sequential files).

Во продолжение, ќе се задржиме само на текстуалните датотеки.

За читање, за запишување и за модификување на текстуална датотека, таа треба прво да се отвори. Функцијата за отворање на текстуална датотека е open() со синтакса:

дат = open('име_на_датотеката', 'начин')

каде:

  • дат е променлива поврзана со физичката датотека.  

  • име_на_датотеката е името на физичката датотека, кое се става во полунаводници.

  • начин е начинот (англ. mode) на користeње на датотеката, и тоа:

    • 'r'     – само за читање од постојна датотека. Ако датотеката не постои, се јавува грешка.

    • 'w'    – само за запишување вопостојна датотека. Ако датотеката постои, се брише дотогашната содржина, а ако не постои, се креира нова датотека.

    • 'r+'   – за читање и за запишување од/во постојна датотека. Ако датотеката не постои, се јавува грешка.

    • 'w+' – за читање и за запишување од/во постојна датотека. Податоците се отсечени и прекриени со нови.       

    •  'a'    – за додавање (запишување) на крајот на постојна датотека, а ако датотеката не постои, се креира нова датотека.

    • 'a+'   – за читање и за запишување на крајот на постојна датотека.

Ако не се наведе начинот на користење на датотеката, се подразбира 'r'.

По завршување на читањето или на запишувањето, датотеката се затвора со функцијата close() со синтакса:

дат = close()

               

Читање од датотека

 

За читање од датотека има неколку функции, и тоа:

  • read() – се чита целата датотека во еден стринг. Корисна е за мали датотеки.

  • readline() – се чита линија по линија и сите линии се ставаат во посебни стрингови.

  • readlines() – се чита целата датотека во листа, а секоја линија е еден елемент од листата.

                               

Запишување во датотека

 

За запишување во датотека има неколку функции, и тоа:

  • write(стринг) – се запишува  стринг-от во една линија од датотека.

  • writelines(листа) – истовремено се запишува листа-та од стрингови во датотеката.

Мени

Anchor 2
Anchor 3
Anchor 4
Anchor 5
Anchor 8
Anchor 10
Anchor 12
Anchor 13
Anchor 14
Anchor 15
Anchor 16
Anchor 17
Anchor 18
Anchor 19
Anchor 20
Anchor 22
Anchor 23
Anchor 27
Anchor 28
Anchor 29
Anchor 33
Anchor 35
Anchor 36
Anchor 37
Anchor 6
Anchor 21
Anchor 7
Anchor 9
Anchor 11
Anchor 24
Anchor 25
Anchor 26
Anchor 30
Anchor 31
Anchor 32
Anchor 34
Anchor 38
Anchor 39
Anchor 40

2023 проф. д-р Ѓорѓи Јованчевски

bottom of page