1. Здраво и добредојдовте на форумот на IT.mk.

    Доколку сеуште не сте дел од најголемата заедница на ИТ професионалци и ентузијасти во Македонија, можете бесплатно да се - процесот нема да ви одземе повеќе од 2-3 минути, а за полесна регистрација овозможивме и регистрирање со Facebook и Steam.
    Сокриј

Туторијал Python Водич за почетници

Дискусија во форумот 'Perl // Ruby // Python' започната од Fatal1ty_, 4 ноември 2017.

Статус на темата:
Затворена за нови мислења.
  1. Fatal1ty_

    Fatal1ty_
    Großmeister

    21,473
    25,515
    28 Февруари 2008
    Машко
    Experienced Web Developer
    Важно! Поради поголема прегледност, оваа тема ќе биде затворена за мислења, а во неа ќе бидат само лекциите една под друга. Во Python Водич за почетници [Q&A - дискусија] ќе има дискусија поврзана со лекциите.

    Python Водич за почетници 1/15

    Поздрав драги колеги и форумџии! Сакам да ви го најавам краткиот водич наменет за почетници кој ќе ве запознае со програмскиот јазик Python одблиску.

    Планирам целиот водич да го поделам во 15 лекции, а комплетно да завршам до Нова Година (колку ми дозволува времето)
    Со овие лекции ќе се потрудам да ви го доближам овој моќен програмски јазик и да ве запознаам со основите на истиот.
    Се со што ќе се сретнете во овие лекции е авторски и е забрането билокакво копирање без моја дозвола.

    Happy Lerning!

    1.0 Инсталација

    1.1 Вовед

    Да започнеме накратко со тоа што е Python (Пајтон)?
    Спред википедија
    Python е често користен програмски јазик за општа употреба, креиран од Гуидо ван Росум од Python software foundation во 1991. Претстаавува интерпретиран програмски јазик, дизајниран со филозофија и принципи кои се фокусирани на чист код и едноставна синтакса. Концизноста на јазикот дозволува концепти и алгоритми многу брзо да се претворат во код, и основата на јазикот дозволува проекти од мал и голем размер.

    До денеска постојат две верзии од овој програмски јазик Python (тоа е Python 2) и Python 3, во која изоставува полна поврзаност еден со друг.

    Во овие лекции ќе користам Python 3 како понов и со подобар код, било каде да го сретнете зборот Python во понатамошните текстови се мисли на Python 3.

    1.2 Инсталација на Python (Windows)

    Она што најпрво морате да направите пред да започнете со работа во Python е инсталирање на интерпретатор на вашиот компјутер.
    За таа цел вам ви е потребно да ја симнете последната дистрибуција од нивната офоцијална страна Download Python

    [​IMG]

    Стартувате го инсталациониот фајл што го симанвте и одверете ја опцијата за инсталација: Install Now и Customize installation.
    Со избор на Install Now, Python ќе се инсталира во папкта прикажна на самиот прозорец и со неа ќе ги инсталириа сите потребни пакети и документација,
    Доколку одберете Customize installation - на следниот чекор ќе треба самите да си одберете што сакате да инсталирате со самиот python.

    Add python 3.6 to PATH опцијата е важна за да можете да стартувате интеппретаторор без внесување на полната патека на користениот фајл при работа со конзолота.

    [​IMG]

    На вториот чекор препорачувам да ги штиклирате сите опции

    Documentation - Документација за корисници
    pip - Пакет менаџер pip
    tcl/tk and IDLE - Инсталација на интегрирана работна средина IDLE и библиотека за графички интерфејт tkinter.

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

    На следниот чекор имате дополнителни опции за процесот на инсталација

    [​IMG]

    Install for all users - Инсталација за сите корисници. Доколку не ја одберете оваа опција ќе се инсталаира во папкта на корисникот кој го инсталирал интерпретаторот.
    Associate files with Python - Именување на фајловите кои се имаат екстензија .py да ги отвара дирекно со Python.
    Create shortcuts for installed applications - Креирање икона за брз пристап до апликацијата.
    Add Python to environment variables - Додавање на патеката до интерпретаторот Python во перманентниот PATH.
    Precomple standard library - Прекомпилација настандардната бибплиотека.
    Последните две опции (Download debugging symbols, Download debug binaries) служат за дебагирање на програмите. Нив нема да ги инсталираме.

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

    [​IMG]

    1.2.1 Инсталација на Python (Linux)

    За да проверите дали интерпретаторт е веќе инсталиран, во конзола внесете
    Код:
    > python 
    или
    Код:
     > python3
    Во првиот случај вие ќе со стартувате python2, во вториот случај python3. Доколку добиете билокава грешка, тоа значи дека python не е инсталарин и треба да го инсталирате пред да го стартувате.
    Тоа можете да го направите со следнава команда во конзола:
    Код:
     > sudo apt-get install python3
    1.3 Инсталација Anaconda (Windows)

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

    Anaconda можете да ја сименте од следниот линк Downloads Можете да најдете верзија за Windows , Linux и Mac OS.

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

    1.3.1 Инсталација Anaconda (Linux)

    Ја симнувате дистрибуцијата за Linux која има .sh екстензија и истата ја стартувате со командата:
    Код:
     > bash име_на_дистрибуција.sh 
    инсталацијата е во тек. За да продолжите стиснете Enter.

    1.4 Инсталација PyCharm (Windows)

    Во процесот за развивање на апликации под Python како и во секој друг програмси јазик потребен ви е и добар IDE, пред било кој текст едитор. Една од подобрите варијанти е IDE PyCharm од JetBrains. За да го симнете идете на линкот: Download PyCharm: Python IDE for Professional Developers by JetBrains

    IDE-то е достапно за Windows, Linux и Mac OS. Доаѓа со два типа на лиценци Professional и Community, ние ќе ја користиме Community лиценцата, бидејќи е бесплатна а е повеќе од доволна за наштите потреби.

    Одкако ќе ја сименте стартувате го инсталациониот фајл и следети ги уплатствата. Она што треба да внимавте е да ја одберете верзијата на вашиот оперативен систем 32-х и 64-х Launcher.

    1.4.1 Инсталација PyCharm (Linux)

    Симнете ја верзијата за Linux и распакувајте ја. Распакувањето можете да го направите со помош на командата:
    Код:
     > tar xvf име_на_архива.tar.gz 
    Одете до папкта во која ја распакувате дистрибуцијата најдте го фолдерот bin, и во него стартувајте ја pycharm.sh со команда:
    Код:
     > ./pycharm.sh 
    По завршувањето на задачата PyCharm треба да се стартува.

    1.5 Проверка

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

    1.5.1 Проверка на интерпретаторот Python

    Доколку работите на Windows ќе стартувате Win+R и во полето ќе внесете python. Во Linux, стартувате терминал и внесете python3.
    Без разлика на кој оперативен систем работите резултатот треба да биде ист...т.е да се појави ист екран:

    [​IMG]

    Да тестирае уште еднаш дали работи во прозоро внесувате:
    Код:
     print(“Hello, World!”) 
    Резултатот треба да биде:

    [​IMG]

    Cool! Python работи како што треба.

    1.5.2 Проверка на Anaconda

    За да бидете сигурни дека Anaconda е иснталирана успшено во Windows, треба да имате папка C:\Anaconda3, во Linux можете да ја најдете во Scripts а потоа да ја повикате командата
    Код:
     > ipython notebook 
    Ако користите Windows во папката C:\Anaconda3\Scripts во полето за адреса внесете cmd.

    [​IMG]
    [​IMG]


    Во вашиот прелистувач треба да се појави ова:

    [​IMG]

    ЗА да создадете notebook за развивачи кликнете на New а потоа одберете Python3 (како на сликата погоре).
    Како резултат ќе се отвори нов таб во кој можете да внесете:
    Код:
     print("Hello, World!")  
    а потоа притиснете Alt+Enter на тастатура.
    Резултат:
    [​IMG]

    1.5.3 Проверка на PyCharm

    Стартувате го PyCharm и одберете Create New Project во прозорецот што ќе ви се појави, и потоа внесете му патека каде да се зачува проектот.

    [​IMG]

    Додадете Python фајл во проектот

    [​IMG]

    Внесете код за тест.

    [​IMG]

    Потоа стартувајте го.

    [​IMG]

    Резултато треба да ви се појави на долниот дел од програмот.

    [​IMG]

    Доколку се ви искочи како што е покажано погоре, тогаш вие сте спремни за учење на Python.
    Ви ветувам интересни лекции...
     
    На Martin Arsov, psyside, prichina и уште 26 други им се допаѓа ова.
  2. Fatal1ty_

    Fatal1ty_
    Großmeister

    21,473
    25,515
    28 Февруари 2008
    Машко
    Experienced Web Developer
    Python Водич за почетници 2/15

    2.0 Започнување со програмирање во Python

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

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

    Python може да работи во два режими:
    • Интерактивен
    • Пакетен

    2.1 Интерактивен режим на работа

    Во интерактивен режим можете да пристапите преку Win+R и внесување на python во полето.
    Ќе го добиете следниов прозор:

    [​IMG]

    Доколку имате фајл кој сакате да го отворите преку Python тоа можете да го направите со внесување python и како аргумент името на фајлот. на пример имаме фајл со име test.py процедурата за стартување е :
    Код:
    > python test.py 
    Отворето го Python во интерактивин режим и внесете:

    Код:
    print(“Hello, World!”)
    стиснете ENTER

    Резултатот е:

    [​IMG]

    Python може да се користи како калкулатор за различни математички операции, но доколку внесеме и математичка библиотека, он станува напреден калкулатор како Matlab, Octave и.т.н

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

    [​IMG]

    За да излезете од интерактивен режим внесете ја командата
    Код:
    exit() 
    и стиснете ENTER.

    Заедно со инсталацијата на Python доаѓа и IDLE. По својот изглед она е сосема иста како и самиот Python само што има повеќе можности (осветлување на синтаксата, гледање предмети, дебагирање и.т.н).

    За да го стартувате IDLE во Windows потребно е да идете во папката Python и таму најдте фајл со име IDLE (Python 3.6 XX-bit)

    [​IMG]

    Во Linux IDLE по default не е инсталирана, па затоа ќе морате додатно да ја инсталирате. За таа цел користет ја конзолата и командата:
    Код:
     > sudo apt-get install idle-python3.6.3
    Во продолжение IDLE е инсталиран, и за да го стартувате внесете:
    Код:
     > idle-python3.6.3 
    2.2 Пакетен режим на работа

    Стартување на Python во режим на интерпретација фајлови со изворен код (пакетен режим). Креирајте фајл со име test.py, отворете го со омилениоте текст едитор и внесете го следниов код:
    Код:
    a = int ( input ())
    print (a ** 2 )
    
    Оваа програма зема цел број на влезот и го прикажува својот квадрат. За да го стартувате внесете:

    Код:
     > python test.py 
    Пример во пракса:

    [​IMG]
     
    На psyside, Sharlovski, shifty и уште 16 други им се допаѓа ова.
  3. Fatal1ty_

    Fatal1ty_
    Großmeister

    21,473
    25,515
    28 Февруари 2008
    Машко
    Experienced Web Developer
    Python Водич за почетници 3/15

    3.0 Видови и модел на податоци

    Во оваа лекција ќе објаснам како Python работи со променливи и како одредува кои видови на податоци можат да се користат на овој јазик. Ајде внимателно да го разгледаме моделот на податоци на Python, како и механизмите за креирање и менување на вредноста на променливите.

    3.1 Кратко за типизирањето на програмските јазици

    Она во што Python е поразличен од останатите програмски јазици е тоа што тој има имплицитна силна динамика на типизирање. Имплицитно пишување или типизација значе дека кога се прогласува променлива, не треба да го наведете нејзиниот вид, ако е експлицитно, тогаш треба да го сторите тоа. Како јазиви со експлицитно декларирање ќе ги спомене Java, C++. Еве и еден пример како ќе изгледа декларирање на цела променлива во Java и Python:

    Код:
    Java :
    int a = 1 ;
    
    Python :
    a = 1
    
    Исто така јазиците доаѓаат со динамичко и статичко типизирање. Во првиот случај видот на променливата се определува дирекно кога програмата е извршена, во вториот случај во фаза на компилација. Како што веќе реков Python е динамички јазик. Јазици како С, C#, Java се статички. Силното пишување не дозволува операции во израз со податоци од различни типови, слабото пак дозволува. Со примери сето ова ќе ви стане појасно.

    3.2 Видови податоци во Python

    Во Python видовите на податоци може да бидат вградени во интерпретаторот (built-in) и внесени кои може да се користат при импортирање на соодветен модул.

    Основи видови се:

    • None (Неопределено значење на променлива)
    • Логички променливи (Boolean Type)
    • Броеви (Numeric Type)
    1. int – цел број
    2. float – број со помошни точки
    3. complex – комплексен број
    • Листи (Sequence Type)
    1. list – список
    2. tuple – кортеж (немам друг превод)
    3. range – обсег
    • Редови (Text Sequence Type)
    1. str
    • Бинарни листи (Binary Sequence Types)
    1. bytes – бајти
    2. bytearray – биза од бајти
    3. memoryview – специјални објекти за пристап до внатрешни податоци како (protocol buffer)
    • Множества (Set Types)
    1. set – множество
    2. frozenset – непроменливо множество
    • Речници (Mapping Types)
    1. dict – речник

    3.3 Модел на податоци

    Со цел да се објави и одма иницијализира променливата, потребно е да го напишете нејзиното име потоа поставiте знак за еднакво и вредноста на променливата.

    Пример:
    Код:
    b = 5
    
    Променливата b ја менува со вредност 5.

    Податоците може да бидат броеви, списоци, линии и.т.н.
    Секој објект има три атрибути: идентификатор, Вредност и Тип.

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

    Кога променливата е инцилизирана, на ниво на интерпретатор следува:

    • Објект со број 5 е создаден (замислете дека во тој момент се создава ќелија и бројот 5 се става во оваа ќелија).
    • Дадениот објект има одреден идентификатор, вредност 5 и тип: цел број.
    • Со помош на „=“ се прави референца помеѓу променливата b и целиот бој 5 (променливата b се однесува на целиот број 5).

    Името на променливата не може да биде исто како и клучните зборови на интерпретаторот. Во Python листата на клучни зборови можете да ги добиете директно од програмата, за таа цел потребно ви е да го поврзете модуот за клучни зборови и да го повикате со командата: keyword . kwlist.

    Код:
    >>> import keyword
    >>> print "Python keywords: " , keyword.kwlist
    
    За да проверите дали идентификаторот е клучен збор или не, можете да го направите следново:

    Код:
    >>> keyword.iskeyword( "try" )
    True
    >>> keyword.iskeyword( "b" )
    False
    
    Со цел да се погледен и објектот со кој се идентификува идентификаторот од оваа променлива, можете да ја користите функцијата id().

    Код:
    >>> a = 4
    >>> b = 5
    >>> id (a)
    1829984576
    >>> id (b)
    1829984592
    >>> a = b
    >>> id (a)
    1829984592
    
    Како што можете да видите од примерот погоре, идентификаторот е некој цел број кој уникатно го адресира објектот, Па од ова можеме да заклучиме дека променливата a со вредност 4 има идентификатор 1829984576, променливата b на објект со id = 1829984592. После пишувањето на операцијата a = b, променливата има ист id како и b.

    Типот на променливата може да се определи со функцијата type().
    Пример:

    Код:
    >>> a = 10
    >>> b = "hello"
    >>> c = ( 1 , 2 )
    >>> type (a)
    < class 'int' >
    >>> type (b)
    < class 'str' >
    >>> type (c)
    < class 'tuple' >
    
    3.4 Променливи и непроменливи типови на податоци

    Во Python постојат променливи и непроменливи типови.

    Како непроменливи (immutable) спаѓаат:
    • Цели бореви (int)
    • Број со помошни точки (float)
    • Комплексни бреоеви (complex)
    • Логички променливи (bool)
    • Кортежи (tuple)
    • Редови (str)
    • Непроменливи множество (frozen set)

    Како променливи (mutable) се декларираат:

    • Лист (list)
    • Множество (set)
    • Библиотеки (dict)

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

    Непроменлив тип значи дека создадениот објект веќе не е променлив. на пример: Имаме променлива k = 15, тоа ќе создеде објект со вредност 15, тип int и идентификатор кој може да се види од функцијата id().

    Код:
    >>> k = 15
    >>> id (k)
    1672501744
    >>> type (k)
    <class 'int'>
    
    Објектот со id = 1672501744 веќе има вредност 15 и негова промена не е возможна.

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

    Да земеме еден пример, ќе креираме еден список [1, 2], а потоа ќе го замениме вториот елемент со 3.

    Код:
    >>> a = [ 1 , 2 ]
    >>> id (a)
    47997336
    >>> a[ 1 ] = 3
    >>> a
    [ 1 , 3 ]
    >>> id (a)
    47997336
    
    Како што можете да приметите иако направивме промена во објектот id-то остана непроменето. Односно променливата дава референца на објект кој содржи 1 и 3, а не дирекно на овие две бројки.
     
    На psyside, Sharlovski, shifty и уште 4 други им се допаѓа ова.
  4. Fatal1ty_

    Fatal1ty_
    Großmeister

    21,473
    25,515
    28 Февруари 2008
    Машко
    Experienced Web Developer
    Python Водич за почетници 4/15

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

    Благодарение на огромниот број на библиотеки за решавање на математички задачи, Python е директен конкурент на Matlab и
    Octave.

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

    Како што спомнав во претходната лекција постојат три типови на податоци со бројки:

    • Цел број (int)
    • Број со помошни точки (float)
    • Комплексен број (complex)

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

    4.1 Артиметички операции со цели и со децимални броеви.


    Во сите примери користам Python во интеркативен режим.

    • Собирање
    Операциите може да се извршуваат со внесување на бројки дирекно:
    Код:
    >>> 3 + 2
    5
    
    Или да се користат променливи:
    Код:
    >>> a = 3
    >>> b = 2
    >>> a + b
    5
    
    Резултатот на операцијата може да се престави и со друга променлива:
    Код:
    >>> a = 3
    >>> b = 2
    >>> c = a + b
    >>> print (c)
    5
    
    Исто така може да се користи и долга и скратена форма.

    • Долга форма:
    Код:
    >>> a = 3
    >>> b = 2
    >>> a = a + b
    >>> print (a)
    5
    
    • Кратка форма:
    Код:
    >>> a = 3
    >>> b = 2
    >>> a += b
    >>> print (a)
    5
    
    Сите горенаведени опции во опарациите за собирање може да се применуваат за сите следни операции.

    • Одземање:
    Код:
    >>> 4 - 2
    2
    
    >>> a = 5
    >>> b = 7
    >>> a - b
    - 2
    
    • Множење:
    Код:
    >>> 5 * 8
    40
    >>> a = 4
    >>> a *= 10
    >>> print (a)
    40
    
    • Делење:
    Код:
    >>> 9 / 3
    3.0
    >>> a = 7
    >>> b = 4
    >>> a / b
    1.7 5
    
    • Добивање на цел дел од делење:
    Код:
    >>> 9 // 3
    3
    >>> a = 7
    >>> b = 4
    >>> a // b
    1
    
    • Добивање на фракциониот дел од делење:
    Код:
    >>> 9 % 5
    4
    >>> a = 7
    >>> b = 4
    >>> a % b
    3
    
    • Степенување:
    Код:
    >>> 5 ** 4
    625
    >>> a = 4
    >>> b = 3
    >>> a ** b
    64
    
    4.2 Работа со комплексни броеви

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

    Да разгледаме неколку примери:
    Код:
    >>> z = 1 + 2j
    >>> print (z)
    ( 1 + 2j )
    >>> x = complex ( 3 , 2 )
    >>> print (x)
    ( 3 + 2j )
    
    Комплексните броеви можат да собираат, одземаат, множат, делат и степенуваат.
    Код:
    >>> x + z
    ( 4 + 4j )
    >>> x - z
    ( 2 + 0j )
    >>> x * z
    ( - 1 + 8j )
    >>> x / z
    ( 1.4 - 0.8j )
    >>> x ** z
    ( - 1.1122722036363393 - 0.012635185355335208j )
    >>> x ** 3
    ( - 9 + 46j )
    
    Во комплексните броеви може да се извлече само реалниот или имагинарниот дел.
    Код:
    >>> x = 3 + 2j
    >>> x.real
    3.0
    >>> x.imag
    2.0
    
    За да се добие комплексен конјугиран број, неопходно е да се користи функцијата conjugate()
    Код:
    >>> x.conjugate()
    ( 3 - 2j )
    
    4.3 Битни операции

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

    • И (AND)
    Код:
    >>> p = 9
    >>> q = 3
    >>> p & q
    1
    
    • ИЛИ (OR)
    Код:
    >>> p | q
    11
    
    • Исклучено ИЛИ (XOR)
    Код:
    >>> p ^ q
    10
    
    • Инверзија
    Код:
    >>> ~ p
    - 10
    
    • Менување лево и десно
    Код:
    >>> p << 1
    18
    >>> p >> 1
    4
    
    4.4 Менување на броеви во друг систем за броење

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

    • Пример за хексадецимален систем
    Код:
    >>> m = 124504
    >>> hex (m)
    '0x1e658'
    
    • Представување на број во октален систем:
    Код:
    >>> oct (m)
    '0o363130'
    
    • Представување на број во бинарен систем:
    Код:
    >>> bin(m)
    '0b11110011001011000'
    
    4.5 Библиотека (Модул) math

    Со стандардната инсталација на Python имате и библиотека math, која содржи многу корисни мамтематички функции.

    За работа со овој модул потербно е да го импортиранте.

    >>> import math

    Да почнеме од најчесто користената функција
    • math.ceil(x)
    Го враќа најблискит поголем број од x.
    Код:
    >>> math.ceil( 3.2 )
    4
    
    • math.fabs(x)
    Апсолутна вредност на број:
    Код:
    >>> math.fabs( - 7 )
    7.0
    
    • math.factorial(x)
    Враќа факториел:
    Код:
    >>> math.factorial( 5 )
    120
    
    • math.floor(x)
    Го враќа најблискит помал број од x:
    Код:
    >>> math.floor( 3.2 )
    3
    
    • math.exp(x)
    Враќа e**x
    Код:
    >>> math.exp( 3 )
    20.08553692318766
    
    • math.log2(x)
    Логаритам на база 2
    • math.log10(x)
    Логаритам на база 10

    • math.log(x[, base])
    Стандардно, го пресметува логаритам на основата e, исто така, можете да одредите и база на логаритам.
    Код:
    >>> math.log2( 8 )
    3.0
    >>> math.log10( 1000 )
    3.0
    >>> math.log( 5 )
    1.609437912434100
    >>> math.log( 4 , 8 )
    0.666666666666666
    
    • math.pow(x, y)
    Враќа вредноста на x во степен на y:
    Код:
    >>> math.pow( 3 , 4 )
    81.0
    
    • math.sqrt(x)
    Квадратен корен од x
    Код:
    >>> math.sqrt( 25 )
    5.0
    
    Тригонометриски функции (само ќе ги набројам, нема да дадам примери)
    • math.cos(x)
    • math.sin(x)
    • math.tan(x)
    • math.acos(x)
    • math.asin(x)
    • math.atan(x)
    И неколку константи за крај
    • math.pi
    • math.e

    Во самиот модул math има уште многу различни функции, за повеќе информации за истите можете да најдете на следниот линк 9.2. math — Mathematical functions — Python 3.6.3 documentation
     
    На psyside, Sharlovski, shifty и уште 8 други им се допаѓа ова.
  5. Fatal1ty_

    Fatal1ty_
    Großmeister

    21,473
    25,515
    28 Февруари 2008
    Машко
    Experienced Web Developer
    Python Водич за почетници 5/15

    5.0 Условни операции и циклуси

    Во оваа лекција ќе се запознаеме со операциите if како и while и for циклуси.

    Основна цел е да, низ примери ви ги претставам овие оператори, да знаете во кои ситуации се корисатат. Услови циклуси имаат сите програмски јазити па така ни python не се издвојува по тоа прашање.

    5.1 Условни операции (разградување на if)

    Операторот if ви овозможува извришување на некоја задача во завиност од одреден услов. Можни се 3 типа на задавање услови.

    • 5.1.1 Конструкција if
    Синтаксата на операторот if изгледа вака:
    Код:
    if израз:
        инструкција_ 1
        инструкција_ 2
        ...
        инструкција_n
    
    По операторот if, изразот е напишан. Ако овој израз е точнен, тогаш инструкциите дефинирани од овој оператор се извршуваат. Изразот е точно ако нејзиниот резултат е број различен од 0, објект кој не е празен, или логично True. По изразот, треба да се стави две точки ":".
    ВАЖНО: кодот што треба да се изврши, во случај на условот да е вистински, е одделено со четири прзни места од лево! (Запоменте го ова)

    Примери:
    Код:
    if 1 :
        print ("hello 1")
    
    Резултат: hello 1
    
    Код:
    a = 3
    if a == 3 :
        print ("hello 2")
    
    Резултат: hello 2
    
    Код:
    a = 3
    if a > 1 :
        print ("hello 3")
    
    Резултат: hello 3
    
    Код:
    lst = [ 1 , 2 , 3 ]
    if lst :
        print ("hello 4")
    
    Резултат: hello 4
    
    • 5.1.2 Конструкција if – else

    Постојат случаеви каде е потребна алтернатива на изразот. т.е ако условот е вистински потребно е да се исполни еден условов, доколку не е исполнет првиот услов потребен е друг. За таа цел се користи конструкцијата if – else.

    Код:
    if израз:
        инструкција_1
        инструкција_2
        ...
        инструкција_n
    else :
        инструкција_a
        инструкција_b
        ...
        инструкција_x
    
    Примери:

    Код:
    a = 3
    if a > 2 :
        print ( "H" )
    else :
        print ("L")
    
    Резултат: H
    
    Код:
    a = 1
    if a > 2 :
        print ("H")
    else :
        print ("L")
    
    Резултат: L
    
    Условите од овој тип може да се напишат и во линија истотака, Во тој случај ќе преставуа троичен израз.

    Пример:

    Код:
    a = 17
    b = True if a > 10 else False
        print (b)
    
    Како резултат ќе испринта: True

    • 5.1.3 Конструкција if – elif – else

    За реализација на избор од неколку алтернативи може да се користи конструкцијата if – elif – else.

    Код:
    if избор_1:
        инструкции_(блок_1)
    elif избор_2:
        инструкции_(блок_2)
    elif избор_3:
        инструкции_(блок_3)
    else :
        инструкции_(блок_4)
    
    Пример:

    Код:
    a = int ( input ( "внесете број:" ))
    if a < 0 :
        print ("Neg")
    elif a == 0 :
        print ("Zero")
    else :
        print ("Pos")
    
    Ако корисникот внесе број што е помал од 0 тогаш ќе биде испринтано “Neg“, еднакво на 0 “Zero“ и поголемо од нула ќе испринта “Pos“.

    5.2 while циклус

    Циклусот while ја извришува наведениот избор се додека условот не биде вистинит.
    Синтаксата е иста како и кај if.

    Код:
    while израз:
        инструкција_1
        инструкција_2
        ...
        инструкција_n
    
    Извршниот сет на инструкции се нарекува тело на еден циклус.

    Пример:

    Код:
    a = 0
    while a < 7 :
        print ("A")
        a += 1
    
    Буквата “А” ќе биде испринтана 7 пати.

    Пример за безконечен циклус:

    Код:
    a = 0
    while a == 0 :
    print ("A")
    
    5.3 Оператори break и continue

    При работа со циклуси, се користат операторорите break и continue. Операторот break има задача предвремено да го прекине циклусот while

    Код:
    a = 0
    while a >= 0 :
    if a == 7 :
    break
    a += 1
    print ("A")
    
    Од погорниот пример, излез од циклусот ќе се направи кога променливата a ќе достигне вредност 7. Ако тој услов не го ставевме ќе добиевме бесконечно повторување на циклусот.

    Операторот continue повторно го стартува циклусот, при ваков код, лоциран после дадениот оператор не се извршува.

    Пример:

    Код:
    a = - 1
    while a < 10 :
        a += 1
    if a >= 7 :
        continue
        print ("A")
    
    Како резултат на кодот буквата "A" ќе биде испринтана 7 пати, И покрај фактот дека вкупно 11 поминувања на циклусот ќе бидат извршени.

    5.4 Циклус for

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

    Пример:

    Код:
    for i in range (5):
    print ("Hello")
    
    Како резултат “Hello” ќе биде извршено пет пати.

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

    Ако имате зададено список и сакате да ја извршите секоја ставка од него (квадрирајте го) и со помош на for тоа можете да го решите не следниов начин:

    Код:
    lst = [1, 3, 5, 7, 9]
    for i in lst:
    print (i ** 2)
    
    Истотака можете да пројдете и низ сите букви во изразот.

    Код:
    word_str = "Hello, world!"
    for l in word_str:
    print (l)
    
    Изразот “Hello, world!” ќе биде испринтан во колона.

    Тука го завршувам овој час. За сите прашања можете да ми се обратите во соодветната тема за прашања и помош.
     
    На psyside, Sharlovski, shifty и уште 4 други им се допаѓа ова.
  6. Fatal1ty_

    Fatal1ty_
    Großmeister

    21,473
    25,515
    28 Февруари 2008
    Машко
    Experienced Web Developer
    Python Водич за почетници 6/15

    6.0 Работа со IPython и Jupyter Notebook

    Пред да продолжиме со изучување на останатите елементи на програмскиот јазик Python, да направиме едне тренинг во пракса. Во оваа лекција ќе ви покажам како да ги користите IPython и Jupyter Notebook и малите тајни за нив.

    IPython е моќна алатка за работа со Python. Основните компоненти на IPython се интерактивен тренинг со широк опсег на
    карактеристики и кернел(јадро) за Јупитер. Јупитер notebook е графички Веб-школка за IPython, која ја проширува идејата за конзолен пристап со интерактивни уреди.

    Главните одлики на оваа платформа се: комплексни интроспекција на објекти, зачувување на историјата на внесување за време на сите сесии, кеширање на излезни резултати, проширување на системот на "магија" команди, сесија за логирање, дополнителна командна синтакса, означување на кодот, пристап до системските обуки, докинг со pdb дебагерот и Python профил.

    IPython ви овозможува да поврзете повеќе клиенти на едно компјутерско јадро(core), и благодарение на неговата архитектура, може да работи во паралелен грозд(cluster).

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

    Веб апликацијата овозможува:
    • Уредување го Python кодот во прелистувач, со означување на синтаксата, auto-outages и автоматско довршување.
    • Стартување го кодот во прелистувач.
    • Прикажување на резултатите од пресметките со медиумски приказ (дијаграми, графикони);
    • Работете со јазикот за Markdown и LaTeX.

    Notebooks се датотеки кои го зачувуваат изворниот код, влезни и излезни податоци добиени за време на сесијата. Всушност, тоа е запис за вашата работа, Сепак, тоа ви овозможува повторно да го извршите кодот кој е присутен на неа. Notebooks може да се зачува во PDF и HTML.

    6.1 Инсталација и стартување

    Jupyter Notebook е дел од Anaconda. Описот на процесот на инсталација може да го најде во првата лекција. За да го стартувате Jupyter Notebook, одете во папката Scripts (таа се наоѓа во директориумот каде што е инсталирана Anaconda) и во командната линија внесете:

    Код:
    > ipython notebook
    
    Како резултат треба да се отвори во вашиот прелистувач Notebook-от.

    [​IMG]


    6.2 Пример за работа

    Ќе разгледаме неколку примери, по што веднаш ќе го разберете принципот на работа со Jupyter notebook. Стартувај notebook на Jupyter и создади папка за нашите примери, за ова Кликнете на New на десната страна од екранот и изберете Folder од паѓачката листа.

    [​IMG]

    Стандардно, папката е именувана како "Untitled folder", преименувај ја во "notebooks": проверете го името на папката и кликнете на копчето "Rename".

    [​IMG]

    Одете во оваа папка и креирајте notebook во него, користејќи го истото копче New, само овој пат треба да изберете "Python3".

    [​IMG]

    Како резултат треба да ви се појави следново:

    [​IMG]

    Python код или текстот за означување на Markdown треба да бидат внесен во ќелиите:

    [​IMG]

    Ако станува збор за Python код, тогаш во лентата со инструменти треба да одберете “Code”.

    [​IMG]

    Ако е Markdown текст, тогаш од истото мени одберете “Markdown”.

    За почеток ќе почене со еднставна матемаичка задача. Одберте својсто Code, во ќелијата внесете „2 + 3“ без наводници и стиснете Ctrl+Enter или Shift+Enter, во првиот случај кодот што го внесовте ќе го изврши интерпретаторот Python, во вториот
    кодот ќе се изврши и ќе се создаде нова ќелија, која ќе се наоѓа под првата, како што е прикажано на сликата подолу.

    [​IMG]

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

    [​IMG]

    6.3 Основни елементи во Jupyter notebook интефејсот

    Секој notebook има име, тоа се наоќа на врвот на екранот. За да го измените само кликнете на него и внесете ново.

    [​IMG]

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

    [​IMG]

    Notebook- от може да работи во еден од двата режими (Edit mode) или (Command mode). Во менито од десна страна се наожа икона „молив“, што значи дека сте во Edit mode, доколку ја нема таа икона тогаш се наоѓа во Command mode.

    [​IMG]

    За да ги видите кратенките што може да се користат преку тастатурата кликнете Help->Keyboard Shortcuts.

    6.4 Вклучување и прекинување на извршување на код

    Ако вашата програма се урна, можете да го прекинете неговото извршување со избирање елемент од лента со мени Kernel -> Interrupt.
    За да додадете нова ќелија, користете Insert->Insert Cell Above и Insert->Insert Cell Below.
    За да стартувате ќелија, користете команди од Менито Cell, или следниве shortcuts:
    • Ctrl + Enter - извршување на содржината на ќелијата.
    • Shift + Enter - извршање на содржината на ќелијата и отварање нова ќелија подолу.
    • Alt + Enter - извршете ја содржината на ќелијата и внесете нова ќелија подолу.

    6.5 Достапност на Notebook-от до друг корисници

    Постојат неколку начини за споделување на вашите кодови си други корисници:

    • Зачувајте го вашиот фајл во формат .ipynb, со што истиот може да се отвори преку Jupyter Notebook.
    • Конвертирајте го во html.

    6.6 Прикачување слика (график) во Notebook-от

    Принтањето на слика може да се изврши со користење на библиотеката matplotlib. Стандардно, ниеднен график не е импортиран во работното поле на notebook-от. За да се прикаже графикот мора да ја користите следнава команда: %matplotlib inline

    Еве и еден пример:

    [​IMG]

    6.7 Магија

    Важен дел од функционалноста на Jupyter Notebook е магичната поддршка. Од магии во IPython се подразбира - дополнителни команди извршени во рамките на една проект кои го олеснуваат процесот на развој и ги прошируваат своите способности

    Спосокот на сите достапни магични команди можете да ги излистате со внесување на командата %lsmagic

    [​IMG]

    За работа со променливи користете ја командата %env.
    За вчитување на код од .py фајл, и исто така и од други notebooks кои имаат екстензија .ipynb, користете ја командата %run.
    За мерење на време на работа на кодот користете %%time и %timeit.

    %%time - Добива информации за времето на работа на кодот во рамките на една ќелија

    %timeit - Започнува кодот предаден на него 100000 пати (по дифолт) и излезната информациј е просек од трите најбрзи извршувања.

    Подолу и пример за сите 4 команди:

    [​IMG]
     
    На psyside, Sharlovski, kirev и уште 5 други им се допаѓа ова.
  7. Fatal1ty_

    Fatal1ty_
    Großmeister

    21,473
    25,515
    28 Февруари 2008
    Машко
    Experienced Web Developer
    Python Водич за почетници 7/15

    7.0 Работа со листи (list)

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

    7.1 Што е тоа листа (list) во Python?

    Список или листи (list) е структура на податоци за складирање на објекти од различни видови. Ако имате користено други програмски јазици, тогаш треба да бидете запознаени со концепт на низа. Значи, листата е многу слична на низата, само, како што веќе беше кажано погоре, може да складира објекти од различни видови. Големината на листата не е статична, нејзината големина може да се менува. Листата е инхерентно променлив тип на податок. За типовите на податоци може детално да прочитате во третата лекција. Променливата дефинирана
    како листа, содржи упатување на структурата во меморијата, која пак зачувува референци за било кои други објекти или структури. Ви делува збунувачки? Ќе разјасниме...

    7.2 Како листите се чуваат во меморијата?

    Како што беше споменато погоре, листата е варијабилен тип на податоци. Со негово креирање, во меморијата се задржани региони, кои може да бидат условно именувани од некој "Контејнер", во кој се чуваат линкови до други податочни елементи во меморијата. Во разлики од такви типови на податоци како број или стринг, содржината на "контејнерот" на листата може да се смени. Со цел подобро да се визуелизира овој процес погледнете ја сликата подолу. Првично беше креирана листа која содржи линкови до предмети 1 и 2, по операцијата a [1] = 3, втората врска во листата почна да укажува на објект 3.

    [​IMG]

    7.3 Креирање, уредување, бришење листи и работа со нејзините елементи

    Креирањето на листа може да се направи со еден од следниве примери.

    Код:
    >>> a = []
    >>> type (a)
    <class 'list'>
    >>> b = list ()
    >>> type (b)
    <class 'list'>
    
    Исто така можете да креирате листа со предефиниран сет на податоци.

    Код:
    >>> a = [ 1 , 2 , 3 ]
    >>> type (a)
    <class 'list'>
    
    Доколку имате листа и сакате да направите нејзина копија,тоа можете да го направите на следниов начин:

    Код:
    >>> a = [1 , 3 , 5 , 7]
    >>> b = a[:]
    >>> print (a)
    [1 , 3 , 5 , 7]
    >>> print (b)
    [1 , 3 , 5 , 7]
    
    или со користење на list

    Код:
    >>> a = [1 , 3 , 5 , 7]
    >>> b = list (a)
    >>> print (a)
    [1 , 3 , 5 , 7]
    >>> print (b)
    [1 , 3 , 5 , 7]
    
    Во случај да едноставно ги соедините листите една со друга, тогаш променливата b ќе биде назначена за повикување на истиот елемент на податоци во меморијата за кој се однесува на а, а не копија од листата a. Односно. ако ја промените листата a, тогаш b исто така ќе се промени.

    Код:
    >>> a = [1 , 3 , 5 , 7]
    >>> b = a
    >>> print (a)
    [1 , 3 , 5 , 7]
    >>> print (b)
    [1 , 3 , 5 , 7]
    >>> a[ 1 ] = 10
    >>> print (a)
    [1 , 10 , 5 , 7]
    >>> print (b)
    [1 , 10 , 5 , 7]
    

    Додавање на елементи во листата можете да ја направите со помош на методата append().

    Код:
    >>> a = []
    >>> a.append(3)
    >>> a.append("hello")
    >>> print (a)
    [3, 'hello']
    
    За бришење на елементи од листата, во случај да го знаете неговот значење, се користи методата remove(x), при што ќе биде избришан првиот линк на дадениот елемнет.

    Код:
    >>> b = [2 , 3 , 5]
    >>> print (b)
    [2 , 3 , 5]
    >>> b.remove(3)
    >>> print (b)
    [2 , 5]
    
    Ако е потребно да избришете елемент според неговиот индекс, користете ја командата del име на листата[индекс].

    Код:
    >>> c = [3 , 5 , 1 , 9 , 6]
    >>> print (c)
    [3 , 5 , 1 , 9 , 6]
    >>> del c[2]
    >>> print (c)
    [3 , 5 , 9 , 6]
    
    Доколку сакате да промените значење на некој елемент од листата, притоа го знаете неговиот индекс, можете да го измените дирекно со негово повикување.

    Код:
    >>> d = [2 , 4 , 9]
    >>> print (d)
    [ 2 , 4 , 9 ]
    >>> d[1] = 17
    >>> print (d)
    [2 , 17 , 9]
    
    Можете да ја исчистите листата едноставно со повторно иницијализирање, како да го создавате повторно. За да пристапите до елементот на листата, наведете го индексот на тој елемент во квадратни загради.

    Код:
    >>> a = [3 , 5 , 7 , 10 , 3 , 2 , 6 , 0]
    >>> a[2]
    7
    

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

    Код:
    >>> a[- 1]
    0
    
    За да повикате од листата одредена сублиста во одреден опсег на индекси, наведете го индексите за почеток и крај во квадратни загради, одвојувајќи ги со две точки.

    Код:
    >>> a[1:4]
    [5 , 7 , 10]
    
    7.4 Методи на листи

    list.append(x) Додава елемент на крај на листата. Истата операција може да се напише и вака: a[len(a):]=[x].

    Код:
    >>> a = [1 , 2]
    >>> a.append(3)
    >>> print (a)
    [1 , 2 , 3]
    
    list.extend(L) Ја проширува постоечката листа со додавање на сите елементи од листата L. Еквивалентна операција: a[len(a):]=L.

    Код:
    >>> a = [1 , 2]
    >>> b = [3 , 4]
    >>> a.extend(b)
    >>> print (a)
    [1 , 2 , 3 , 4]
    
    list.insert(i, x) Го вметнува елементот x во позиција i. Првиот аргумент е индекс на кој треба да се вметне вротиор аргумент x.

    Код:
    >>> a = [1 , 2]
    >>> a.insert(0 , 5)
    >>> print (a)
    [5 , 1 , 2]
    >>> a.insert(len(a), 9)
    >>> print (a)
    [5 , 1 , 2 , 9]
    
    list.remove(x) Го брише првиот влезен елемент од x.

    Код:
    >>> a = [1 , 2 , 3]
    >>> a.remove(1)
    >>> print (a)
    [2 , 3]
    
    list.pop() Го отстранува објектот од позиција i и го враќа. Ако го користите методот без аргумент, последната ставка во листата ќе биде избришана.

    Код:
    >>> a = [1 , 2 , 3 , 4 , 5]
    >>> print (a.pop(2))
    3
    >>> print (a.pop())
    5
    >>> print (a)
    [1 , 2 , 4]
    
    list.clear() Ги брише сите лементи од листата. Еквивалентна операција: del a[:].

    Код:
    >>> a = [1 , 2 , 3 , 4 , 5]
    >>> print (a)
    [1 , 2 , 3 , 4 , 5]
    >>> a.clear()
    >>> print (a)
    []
    
    list.index(x[, start[, end]]) Го враќа индексот на елементот.

    Код:
    >>> a = [1 , 2 , 3 , 4 , 5]
    >>> a.index(4)
    3
    
    list.count(x) Го враќа бројот на повторувања на елементот x во листата.

    Код:
    >>> a = [1 , 2 , 2 , 3 , 3]
    >>> print (a.count(2))
    2
    
    list.sort(key=None, reverse=False) Ги сортира елементите во листата по растечки редослед. За да се сортираат во обратен редослед користете reverse=True.

    Код:
    >>> a = [1 , 4 , 2 , 8 , 1]
    >>> a.sort()
    >>> print (a)
    [1 , 1 , 2 , 4 , 8]
    
    list.reverse() Ге менува распоредот на елементите во списокот во обратен.

    Код:
    >>> a = [1 , 3 , 5 , 7]
    >>> a.reverse()
    >>> print (a)
    [7 , 5 , 3 , 1]
    
    list.copy() Прави коопија од листата. еквивалентно a[:].

    Код:
    >>> a = [1 , 7 , 9]
    >>> b = a.copy()
    >>> print (a)
    [1 , 7 , 9]
    >>> print (b)
    [1 , 7 , 9]
    >>> b[0] = 8
    >>> print (a)
    [1 , 7 , 9]
    >>> print (b)
    [8 , 7 , 9]
    
    7.5 List Comprehensions

    List Comprehensions преведено на македонски би било "апстракни листи" или "листа на вклучување" е дел од синтаксата на јазикот, што обезбедува лесен начин за градење на листи. Најлесен начин е да ги прикажете работните сознанија со еден пример. Да претпоставиме дека треба да креирате листа на цели броеви од 0 до n, каде што n е предефиниран. Класичниот начин на решавање на овој проблем би изгледал вака:

    Код:
    n = int ( input ())
    a = []
    for i in range (n):
    a.append(i)
    print (a)
    
    Со користење на list comprehensions може да се изведе вака:

    Код:
    n = int ( input ())
    a = [i for i in range (n)]
    print (a)
    
    или вака, во случај да не треба да користите n повеќе:

    Код:
    a = [i for i in range ( int ( input ()))]
    print (a)
    
     
    На psyside, Sharlovski, moongose и уште 3 други им се допаѓа ова.
  8. Fatal1ty_

    Fatal1ty_
    Großmeister

    21,473
    25,515
    28 Февруари 2008
    Машко
    Experienced Web Developer
    Python Водич за почетници 8/15

    8.0 N-торка (tuple)

    Во оваа лекција се фокусираме на N-торковите (tuple) во Python. Ќе се фокусираме на употребата на tuple, методите на создавање и основните методи за работа со нив. Исто така, ќе објаснам како да конвертирањте торка во листа и обратно.

    8.1 Што е тоа tuple во Python?

    N-торка (tuple) е непроменлива податочна структура, која според нејзината сличност е многу слична со листите. Како што веројатно знаете, а ако не, тогаш прочитајте ја седмата лекција, листата е варијабилен тип на податоци. Односно. ако имаме листа на a = [1, 2, 3] и сакаме да го замениме вториот елемент од 2 на 15, тогаш можеме да го сториме тоа со директно пристапување до елементот на листата.

    Код:
    >>> a = [1 , 2 , 3]
    >>> print (a)
    [1 , 2 , 3]
    >>> a[1] = 15
    >>> print (a)
    [1 , 15 , 3]
    
    Со N-торка, не можеме да извршиме таква операција бидејќи неговите елементи е невозможно да ги измените.

    Код:
    >>> b = (1 , 2 , 3)
    >>> print (b)
    (1 , 2 , 3)
    >>> b[1] = 15
    Traceback (most recent call last):
    File "<pyshell#6>" , line 1 , in <module>
    b[1] = 15
    TypeError : 'tuple' object does not support item assignment
    
    8.2 Зошто е важен N-торк во Python?

    Постојат неколку причини зошто треба да користите N-торка наместо листи. Еден од нив е да ги заштити податоците од случајни промени.
    Ако добиеме низа податоци од некаде, и имаме желба да работиме со неа, но ние немаме намера директно да ги смениме податоците, тогаш ова е само случај кога N-торка ќе ни помогнат. Користејќи ги во оваа задача, дополнително добиваме неколку бонуси одеднаш. Како прво, тоа е заштеда на простор. Факт е дека N-торк во меморијата зазема помалку место од листите.

    Код:
    >>> lst = [10 , 20 , 30]
    >>> tpl = (10 , 20 , 30)
    >>> print(lst.__sizeof__())
    32
    >>> print(tpl.__sizeof__())
    24
    
    Како второ - зголемување на продуктивноста, што се должи на фактот дека tuples работат побрзо од листите (односно, работата на елементите за набројување итн. ќе трошат помалку време). Исто така, важно е да се напомене дека tuples може да се користат како клуч за речник (за тоа потоа).

    8.3 Креирање, бришење на tuples и работа со нивните елементи

    • Креирање N-торк - за да креирате празна N-торк можете да користите една од следниве команди:
    Код:
    >>> a = ()
    >>> print (type (a))
    <class 'tuple'>
    >>> b = tuple()
    >>> print (type (b))
    <class 'tuple'>
    
    N-торка со наведената содржина се креирана исто како и листа, само наместо квадратни загради се користат мали.

    Код:
    >>> a = (1 , 2 , 3 , 4 , 5)
    >>> print (type (a))
    <class 'tuple'>
    >>> print (a)
    (1, 2, 3, 4, 5)
    
    По желба можете да користите и функција tuple().

    Код:
    >>> a = tuple ((1 , 2 , 3 , 4))
    >>> print (a)
    (1 , 2 , 3 , 4)
    
    • Пристап до елементите на точката tuple - Пристапот до елементите на N-торка е исто каки и за елементите на листата - преку спецификацијата на индексот. Но, како што веќе рековме, невозможно е да се променат елементите на N-торка!
    Код:
    >>> a = (1 , 2 , 3 , 4 , 5)
    >>> print (a[0])
    1
    >>> print (a[1 : 3])
    (2 , 3)
    >>> a[1] = 3
    Traceback (most recent call last):
    File "<pyshell#24>" , line 1 , in < module >
    a[1] = 3
    TypeError : 'tuple' object does not support item assignment
    
    • Бришете на N-торка - Бришење на одделни елементи од N-торка е невозможно.
    Код:
    >>> a = (1 , 2 , 3 , 4 , 5)
    >>> del a[0]
    Traceback (most recent call last):
    File "<pyshell#26>" , line 1 , in < module >
    del a[0]
    TypeError : 'tuple' object doesn 't support item deletion
    
    но можете да ја избришете N-торка-та во целост:

    Код:
    >>> del a
    >>> print (a)
    Traceback (most recent call last):
    File "<pyshell#28>" , line 1 , in <module>
    print (a)
    NameError : name 'a' is not defined
    
    • Конвертирање на N-торка во листа и обратно

    Врз основа на N-торка, можете да креирате листа, и обратно. За конвертирањето на листа во N-торка е доволно да го пренесете како аргумент на функцијата tuple().

    Код:
    >>> lst = [1 , 2 , 3 , 4 , 5]
    >>> print (type (lst))
    <class 'list'>
    >>> print (lst)
    [1 , 2 , 3 , 4 , 5]
    >>> tpl = tuple(lst)
    >>> print (type (tpl))
    <class 'tuple' >
    >>> print (tpl)
    (1 , 2 , 3 , 4 , 5)
    
    Пример за претварање на N-торка во листа:

    Код:
    >>> tpl = (2 , 4 , 6 , 8 , 10)
    >>> print (type (tpl))
    <class 'tuple'>
    >>> print (tpl)
    (2 , 4 , 6 , 8 , 10)
    >>> lst = list (tpl)
    >>> print (type (lst))
    <class 'list'>
    >>> print (lst)
    [2 , 4 , 6 , 8 , 10]
    
     
    На psyside, Sharlovski, shifty и уште 4 други им се допаѓа ова.
  9. Fatal1ty_

    Fatal1ty_
    Großmeister

    21,473
    25,515
    28 Февруари 2008
    Машко
    Experienced Web Developer
    Python Водич за почетници 9/15

    9.0 Речници (dict)

    9.1 Што се тоа речници (dict) во Python?

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

    9.2 Креирање, менување, бришење речници и работа со ноговите елементи

    • 9.2.1 Креирање речник

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

    Код:
    >>> d1 = dict()
    >>> print (type(d1))
    < class 'dict'>
    >>> d2 = {}
    >>> print (type(d2))
    < class 'dict'>
    
    Ако треба да креирате речник со претходно подготвен сет на податоци, тогаш можете да користите еден од примерите наведени погоре, но со попишување групи на клучни вредности.

    Код:
    >>> d1 = dict (Ivan = "manager" , Mark = "worker")
    >>> print(d1)
    {'Mark' : 'worker' , 'Ivan' : 'manager'}
    >>> d2 = {"A1" : "123" , "A2" : "456"}
    >>> print(d2)
    {'A2' : '456' , 'A1' : '123'}
    
    • 9.2.2 Додавање и бришење елементи

    За да додадете елемент во речникот потребно е да зададете нов клуч и значење.

    Код:
    >>> d1 = {"Macedonia" : "Skopje" , "USA" : "Washington"}
    >>> d1["China"] = "Beijing"
    >>> print(d1)
    {'Macedonia' : 'Skopje' , 'China' : 'Beijing' , 'USA' : 'Washington'}
    
    За бришење на елемети од речникот можете да ја користите командата del.

    Код:
    >>> d2 = {"A1" : "123" , "A2" : "456"}
    >>> del d2["A1"]
    >>> print(d2)
    {'A2' : '456'}
    
    • 9.2.3 Работа со речници

    Проверка дали клучот постои во речникот можеме да ја провериме со помош на операторот in.

    Код:
    >>> d2 = {"A1" : "123" , "A2" : "456"}
    >>> "A1" in d2
    True
    >>> "A3" in d2
    False
    
    Пристапот до елемент во речникот се врши исто како да е пристап до елемент од листата, само клучот е индициран како индекс.

    Код:
    >>> d1 = {"Macedonia":"Skopje","USA":"Washington"}
    >>> d1["Macedonia"]
    'Skopje'
    
    9.3 Методи на речници

    Во речникот се достапни следниве методи:
    • clear() - Брише сите елементи во речникот
    Код:
    >>> d2 = {"A1":"123", "A2":"456"}
    >>> print(d2)
    {'A2':'456', 'A1':'123'}
    >>> d2.clear()
    >>> print(d2)
    {}
    
    • copy() - Создава нова копија од речникот
    Код:
    >>> d2 = {"A1":"123", "A2":"456"}
    >>> d3 = d2.copy()
    >>> print(d3)
    {'A1':'123', 'A2':'456'}
    >>> d3["A1"] = "789"
    >>> print(d2)
    {'A2':'456', 'A1':'123'}
    >>> print(d3)
    {'A1':'789', 'A2':'456'}
    
    • fromkeys(seq[, value]) - Создава нов речник со клучеви од seq и вредности од value. Стандардно value е поставена на None.
    • get(key) - Враќа значење на речник во клуч key.
    Код:
    >>> d = {"A1":"123", "A2":"456"}
    >>> d.get("A1")
    '123'
    
    • keys() - Ги принта клучевите на речникот.
    Код:
    >>> d = {"A1":"123", "A2":"456"}
    >>> d.keys()
    dict_keys(['A2' , 'A1'])
    
    • pop(key[, default]) - Ако клучот key е во речникот, тогаш овој елемент е отстранет од речникот и вредноста за овој клуч се враќа, во спротивно ќе се врати default вредност. Доколку default не е одредено и бараниот клуч не е во речникот, тогаш ќе врати KeyError.
    Код:
    >>> d = {"A1" : "123" , "A2" : "456"}
    >>> d.pop("A1")
    '123'
    >>> print (d)
    {'A2':'456'}
    
    • popitem() - Брише и враќа пар (клуч, вредност) од речникот. Ако речникот е празен, тогаш враќа KeyError.
    Код:
    >>> d = {"A1" : "123" , "A2" : "456"}
    >>> d.popitem()
    ('A2' , '456')
    >>> print (d)
    {'A1' : '123'}
    
    • setdefault(key[, default]) - Ако клучот е присутен во речникот, тогаш вредноста се враќа од клучот. Ако нема клуч, тогаш елементот со клуч key се вметнува во речникот default вредност, ако default вредност не е дефинирана, тогаш стандардно е поставено на None.
    Код:
    >>> d = {"A1" : "123" , "A2" : "456"}
    >>> d.setdefault("A3" , "777")
    '777'
    >>> print(d)
    {'A2' : '456' , 'A3' : '777' , 'A1' : '123'}
    >>> d.setdefault("A1")
    '123'
    >>> print(d)
    {'A2' : '456' , 'A3' : '777' , 'A1' : '123'}
    
    • update([other]) - Го ажурира речникот во парови (key/value) од other, ако клучевите веќе постојат, тогаш ги ажурираат нивните вредности.
    Код:
    >>> d = {"A1" : "123" , "A2" : "456"}
    >>> d.update({"A1" : "333" , "A3" : "789"})
    >>> print(d)
    {'A2' : '456' , 'A3' : '789' , 'A1' : '333'}
    
    • values() - Враќа вредности од елеметите во речникот.
    Код:
    >>> d = {"A1" : "123" , "A2" : "456"}
    >>> d.values()
    dict_values(['456' , '123'])
    
     
    На psyside, Sharlovski, shifty и уште 3 други им се допаѓа ова.
  10. Fatal1ty_

    Fatal1ty_
    Großmeister

    21,473
    25,515
    28 Февруари 2008
    Машко
    Experienced Web Developer
    Python Водич за почетници 10/15

    10.0 Функции во Python

    Лекција посветена на функциите во Python и работа со нив (поставување аргументи, и вратена вредност). Исто така ќе ја разгледаме и lambda-функцијата и нејзините особии и користење.

    10.1 Што е тоа функција во Python?

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

    10.2 Создавање функции

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

    Код:
    def fun ():
        pass
    
    Функцијата враќа информација со користење на клучниот збор return, по што се одредува повратната вредност. Пример за функција која која враќа вредност е претставена подолу.

    Код:
    >>> def fun():
        return 1
    >>> fun()
    1
    
    10.3 Работа со функции

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

    Код:
    >>> def summa(a, b):
        return a + b
    >>> summa( 3 , 4 )
    7
    
    Да разгледаме уште два примери за користење на функцијата: пресметување на бројот користејќи рекурзија и пресметување на факториелот користејќи циклус.
    • Пресметка на број.
    Код:
    >>> def fibb(n):
        if n == 0 :
            return 0
        elif n == 1 :
            return 1
        elif n == 2 :
            return 1
        else :
            return fibb(n - 1 ) + fibb(n - 2 )
    >>> print (fibb( 10 ))
    55
    
    • Пресметка на факторијалот
    Код:
    >>> def factorial(n):
        prod = 1
        for i in range ( 1 , n + 1 ):
            prod *= i
        return prod
    >>> print (factorial( 5 ))
    120
    
    Можете да доделите функција на променлива и да ја користите ако сакате да го скратите името. Пример е употребата на функцијата за пресметување на факториалот од пакетот math.

    Код:
    >>> import math
    >>> f = math.factorial
    >>> print (f( 5 ))
    120
    
    10.4 Lambda-Функции

    Lambda-функција е анонимна функција со произволен број на аргументи и пресметува единствен израз. Телото на таква функција не може да содржи повеќе од една изјава (или израз). Оваа функција може да се користи во рамките на сите подвижни пресметки (на пример, внатре во filter(), map() и reduce()) или самостојно, во оние места каде што е неопходно да се изврши некоја пресметка во функцијата.

    Код:
    >>> (lambda x : x**2 )(5)
    25
    
    Lambda-функцијата може да биде доделена на променлива и подоцна да ја користите како име на функција.

    Код:
    >>> sqrt = lambda x : x ** 0.5
    >>> sqrt ( 25 )
    5.0
    
    Листите може да се обработат со lambda функции во функции како што се map(), filter(), reduce(). Функцијата map зема два аргументи, првата е функција која ќе се примени на секој елемент од листата, а втората е листата што треба да се обработи.

    Код:
    >>> l = [1, 2, 3, 4, 5, 6, 7]
    >>> list (map(lambda x : x**3 , l))
    [1, 8, 27, 64, 125, 216, 343]
    
     
    На psyside, Sharlovski, Shutter и уште 4 други им се допаѓа ова.
  11. Fatal1ty_

    Fatal1ty_
    Großmeister

    21,473
    25,515
    28 Февруари 2008
    Машко
    Experienced Web Developer
    Python Водич за почетници 11/15

    11.0 Работа со исклучоци (exceptions)

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

    11.1 Исклучоци (exceptions) во програмските јазици

    Исклучоци (exceptions
    ) во програмските јазици се нарекуваат проблеми во текот на програмата, нејзината понатамошна работа во рамките на основниот алгоритам.
    Типичен пример за исклучоци се делењето со нула, неможноста да се читаат податоци од датотека (уред), недостатокот на достапна меморија, пристап до затворен простор на меморија итн. За да се справиме со ваквите ситуации во програмските јазици, обично постои специјален механизам наречен (exception handling).

    Исклучоците се поделени во синхрони и асинхрони.
    • Синхрони исклучоци може да се случат само во одредени места на програмата. На пример, ако имате код кој отвора датотека и чита податоци од неа, а потоа исклучок од типот "Грешка при читање податоци" може да се појави само во наведениот дел од кодот.
    • Асинхрони исклучоци може да се појават во секое време за време на извршување на програмата, тие се поврзани со било какви хардверски проблеми или пристигнување на податоци.

    Во програмските јазици, постои посебен механизам за обработка на исклучоците. Обработката може да се направи со враќање, кога по обработката на исклучувањето, извршувањето на програмата продолжува од местото каде што се случило. И обработката без враќање, во овој случај, кога се појавува исклучок, се врши транзиција кон посебен, претходно подготвен блок-код.

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

    11.2 Синтаксички грешки во Python


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

    Код:
    >>> for i in range(10):
        prin("hello!")
    
    Traceback (most recent call last):
    File "<pyshell#2>" , line 2 , in < module >
    prin("hello!")
    NameError : name 'prin' is not defined
    
    11.3 Исклучоци во Python

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

    Пример за исклучување на ZeroDivisionError што се случува кога се дели со 0.

    Код:
    >>> a = 10
    >>> b = 0
    >>> c = a / b
    
    Traceback (most recent call last):
      File "<pyshell#5>" , line 1 , in < module >
        c = a / b
    ZeroDivisionError : division by zero
    
    Во Python, исклучоците се специфичен тип на податоци, преку кои корисникот (програмерот) ги прима информациите за грешката. Ако во кодот на програмата Исклучокот не е обработен, тогаш апликацијата запира и се случува детален опис за грешката, наведувајќи ја локацијата во
    програмата каде што се случува и типот на таа грешка.

    11.4 Хиерархија на исклучоци во Python

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

    Код:
    BaseException
    +– SystemExit
    +– KeyboardInterrupt
    +– GeneratorExit
    +– Exception
        +– StopIteration
        +– StopAsyncIteration
        +– ArithmeticError
        |       +– FloatingPointError
        |       +– OverflowError
        |       +– ZeroDivisionError
        +– AssertionError
        +– AttributeError
        +– BufferError
        +– EOFError
        +– ImportError
               +– ModuleNotFoundError
        +– LookupError
        |     +– IndexError
        |     +– KeyError
        +– MemoryError
        +– NameError
        |     +– UnboundLocalError
        +– OSError
        |     +– BlockingIOError
        |     +– ChildProcessError
        |     +– ConnectionError
        |     |     +– BrokenPipeError
        |     |     +– ConnectionAbortedError
        |     |     +– ConnectionRefusedError
        |     | +– ConnectionResetError
        |     +– FileExistsError
        |     +– FileNotFoundError
        |     +– InterruptedError
        |     +– IsADirectoryError
        |     +– NotADirectoryError
        |     +– PermissionError
        |     +– ProcessLookupError
        |     +– TimeoutError
        +– ReferenceError
        +– RuntimeError
        |     +– NotImplementedError
        |     +– RecursionError
        +– SyntaxError
        |     +– IndentationError
        |     +– TabError
        +– SystemError
        +– TypeError
        +– ValueError
        |     +– UnicodeError
        |     +– UnicodeDecodeError
        |     +– UnicodeEncodeError
        |     +– UnicodeTranslateError
        +– Warning
        +– DeprecationWarning
        +– PendingDeprecationWarning
        +– RuntimeWarning
        +– SyntaxWarning
        +– UserWarning
        +– FutureWarning
        +– ImportWarning
        +– UnicodeWarning
        +– BytesWarning
        +– ResourceWarning
    
    Како што може да се види од горенаведениот дијаграм, сите исклучоци се подкласа на BaseException. Повеќе информации за хиерархијата на исклучоци и нивниот опис можете да прочитате во официјалната документација 5. Built-in Exceptions — Python 3.6.4rc1 documentation

    11.5 Обработка на исклучоци во Python

    Треба да се врши обработка на исклучоците за да се осигураме дека апликацијата не „паќа“ секој пат кога ќе се појави исклучок. За таа цел блок-кодот во кој може да се појави исклучителна ситуација мора да се постави внатре во синтаксата користејќи: try…except.

    Код:
        print("start")
            try :
    val = int(input("input number:"))
        tmp = 10 / val
        print(tmp)
            except Exception as e:
        print("Error! " + str (e))
        print("stop")
    
    Во горниот пример, постојат два можни исклучоци: ValueError, што се појавува ако напишете "внесете број" на барањето за програмата, вие
    внесете црта, и ZeroDivisionError - ако внесете број 0. Излезот на програмата при внесување нулта број ќе биде:

    Код:
    start
    input number: 0
    Error!
    stop
    
    Ако немаше try…except, тогаш програмата ќе се "скрши".

    Код:
        print (“start”)
    val = int ( input (“ input number: “))
    tmp = 10 / val
        print (tmp)
        print (“stop”)
    
    Ако внесете 0 за барањето на горенаведениот пример, програмата ќе запре со принтање на порака за исклучок.

    Код:
    start
    input number: 0
    Traceback (most recent call last):
    File "F:/work/programming/python/devpractice/tmp.py", line 3, in <module>
    tmp = 10 / val
    ZeroDivisionError: division by zero
    
    Обрнете внимание, недостасува stop на крајот пд програмата.

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

    • Прво се извршува кодот во операторите try и except.
    • Ако не се случи исклучок за време на неговото извршување, кодот во except блокот се прескокнува, а кодот во блокот try се извршува целосно.
    • Ако дојде до исклучок, извршувањето во рамките на блокот try е прекинато и се извршува кодот во блокот except. Во овој случај, во операторот except, може да се прикажат какви исклучоци ќе има во него.
    • Ако меѓу другите блокови не постои соодветен except за обработка, тогаш тоа се пренесува на надворешноста на try блокот. Во случај кога управувачот со исклучоци не е пронајде, исклучокот ќе биде неподготвен (unhandled exception) и програмата ќе престане да работи.

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

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

    Код:
        print("start")
            try :
    val = int(input ("input number:"))
    tmp = 10 / val
        print(tmp)
            except(ValueError , ZeroDivisionError):
        print("Error!")
        print("stop")
    
    Или вака,ако сакаме да се справиме со ValueError, ZeroDivisionError посебно и во исто време, да продолжат да работат кога постојат исклучоци различни од погоре.

    Код:
        print("start")
            try :
    val = int(input("input number: "))
    tmp = 10 / val
        print(tmp)
            except ValueError :
        print("ValueError!")
            except ZeroDivisionError :
        print("ZeroDivisionError!")
            except:
        print("Error!")
        print("stop")
    
    Можно е да се пренесат детални информации за тоа што се случило со кодот во блокот except.

    Код:
        print("start")
            try :
    val = int (input("input number: "))
    tmp = 10 / val
        print(tmp)
            except ValueError as ve:
        print("ValueError! {0}".format(ve))
            except ZeroDivisionError as zde:
        print("ZeroDivisionError! {0}".format(zde))
            except Exception as ex:
        print("Error! {0}" .format(ex))
        print("stop")
    
    11.6 Користење на finally во обработка на исклучоци

    За извршување на специфичен програмски код при излегување од блок try / except, користете го операторот finally.

    Код:
            try :
    val = int(input( "input number: "))
    tmp = 10 / val
        print(tmp)
            except :
        print("Exception")
            finally:
        print("Finally code")
    
    Без оглед на тоа дали кодот ќе се појави во try блокот или не , кодот во finally блокот ќе се изврши. Ако треба да извршите некој програмски код, ако е во процес извршувањето на try блокот, нема исклучоци, тогаш можете да го употребите и операторот else.

    Код:
            try :
    f = open("tmp.txt" , "r")
    for line in f:
        print(line)
    f.close()
            except Exception as e:
        print(e)
            else :
        print("File was readed")
    
    11.7 Генерирање исклучоци во Python

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

    Код:
            try :
    raise Exception("Some exception")
            except Exception as e:
        print("Exception exception " + str (e))
    
    Така, можете "рачно" да повикате исклучоци ако е потребно.

    11.8 Кориснички исклучоци (User-defined Exceptions) во Python

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

    Код:
        class NegValException(Exception):
    pass
            try :
    val = int(input("input positive number: "))
    if val < 0 :
    raise NegValException("Neg val: " + str (val))
        print(val + 10)
    except NegValException as e:
        print(e)
    
     
    На psyside, shifty, Sharlovski и уште 3 други им се допаѓа ова.
  12. Fatal1ty_

    Fatal1ty_
    Großmeister

    21,473
    25,515
    28 Февруари 2008
    Машко
    Experienced Web Developer
    Python Водич за почетници 12/15

    12.0 Влез/излез на податоци. Работа со датотеки

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

    12.1 Излезни податоци во конзола

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

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

    Код:
    >>> print("Hello")
    Hello
    >>> print("Hello, " + "world!")
    Hello, world!
    >>> print ("Age: " + str (23))
    Age: 23
    
    Стандардно се користи простор за одделување на елементите во функцијата print.

    Код:
    >>> print ( "A" , "B" , "C" )
    A B C
    
    За да го замените сепараторот, мора да ја користите параметарот sep на функцијата print.

    Код:
    print ( "A" , "B" , "C" , sep= "#" )
    A #B#C
    
    Како последен елемент на излезната низа, се користи линиски знак.

    Код:
    >>> for i in range( 3 ) :
    print ( "i: " + str(i))
    i : 0
    i : 1
    i : 2
    
    За да го замените, користете го end.

    Код:
    >>> for i in range( 3 ):
    print ( "[i: " + str(i) + "]" , end= " -- " )
    [i: 0] -- [i: 1] -- [i: 2] --
    
    12.2 Внесување на податоци со тастатурата

    За да ги прочитате податоците внесени од тастатурата, користете ја функцијата input().

    Код:
    >>> input()
    test
    'test'
    
    За да зачувате податоци во променлива, користете ја следнава синтакса.

    Код:
    >>> a = input()
    hello
    >>> print(a)
    hello
    
    Ако цел број се внесе, тогаш низата се добива со функцијата input(), исто така може да се пренесе директно на функцијата int().

    Код:
    >>> val = int(input())
    123
    >>> print(val)
    123
    >>> type(val)
    <class 'int'>
    
    За да се прикаже како низа, користете го како аргумент за функцијата input().

    Код:
    >>> it = int (input("input number: "))
    input number: 334
    >>> print (it)
    334
    
    За претворање на низа во листа, користете метод split() стандардно, се користи простор како сепаратор.

    Код:
    >>> l = input().split()
    1 2 3 4 5 6 7
    >>> print(l)
    ['1', '2', '3', '4', '5', '6', '7']
    
    Сепараторот можете да го замените со происзволен знак во финкцијата split().

    Код:
    >>> nl = input().split("-")
    1-2-3-4-5-6-7
    >>> print(nl)
    ['1', '2', '3', '4', '5', '6', '7']
    
    За да ја прочитате листата на броеви и истовремено да ги доведете до int тип, можете да го користете овој вид ма конструкција.

    Код:
    >>> nums = map(int, input().split())
    1 2 3 4 5 6 7
    >>> print( list(nums))
    [1, 2, 3, 4, 5, 6, 7]
    
    12.3 Работа со датотеки
    • Отворање и затворање на датотека
    За да отворите датотека, користете ја open() функцијата, која враќа објекти на датотеката. Најчесто користената форма на оваа функција изгледа вака open(име_на_датотека, пристапен_режим).

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

    ‘r’ - Отворете ја датотекатаа само за читање
    ‘w’ - Отворете ја дадтотеката за запишување
    ‘x’ - Отворете ја датотеката со цел да се создадете, ако датотеката постои, тогаш повик на функцијата open ќе јави грешка
    ‘a’ - Отворете ја датотеката за запишување, при што новите податоци се додаваат на крајот на датотека, без бришење на постоечките
    ‘b’ - Бинарен режим
    ‘t’ - Текстуален режим
    ‘+’ - Отвора датотека за ажурирање

    Стандардно, датотеката е отворена за читање во текстуален режим.
    Објектот на датотеката ги има следните атрибути:
    • file.closed - Враќа true ако датотеката е затворена и false во спротивен случај
    • file.mode - Враќа пристапот до датотеката, датотеката мора да биде отворена
    • file.name - Име на датотеката
    Код:
    >>> f = open("test.txt", "r")
    >>> print ("file.closed: " + str(f.closed))
    file.closed: False
    >>> print ("file.mode: " + f.mode)
    file.mode: r
    >>> print ("file.name: " + f.name)
    file.name: test.txt
    
    За да ја затворите датотеката користете close().
    • Читање податоци од датотека
    Читањето на податоци од датотека се врши со помош на функциите read(големина) и readline().

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

    Код:
    >>> f = open("test.txt", "r")
    >>> f.read()
    '1 2 3 4 5 \n Work with file \n '
    >>> f.close()
    
    Како аргумент за методот, можете да го префрлите бројот на знаци кои е потребно да се разгледаат.

    Код:
    >>> f = open("test.txt", "r")
    >>> f.read(5)
    '1 2 3'
    >>> f.close()
    
    Методот readline() ви овозможува да прочитате низа од отворена датотека.

    Код:
    >>> f = open("test.txt", "r")
    >>> f.readline()
    '1 2 3 4 5 \n '
    >>> f.close()
    
    Можете да организирате читање по линија со операторот for.

    Код:
    >>> f = open("test.txt", "r")
    >>> for line in f:
    ... print (line)
    ...
    1 2 3 4 5
    Work with file
    >>> f.close()
    
    • Запишување податоци во датотека
    За да запишете податоци во датотеката, се користи методот write(низа), ако записот е успешен, тогаш ќе го врати бројот напишани знаци.

    Код:
    >>> f = open("test.txt", "a")
    >>> f.write( "Test string" )
    11
    >>> f.close()
    
    • Додатни методи за работа со датотеки
    Метода tell() враќа тековната позиција на "условен курсор" во датотеката. На пример, ако броете пет знаци, "курсорот" ќе биде поставен на позиција 5.

    Код:
    >>> f = open("test.txt", "r")
    >>> f.read(5)
    '1 2 3'
    >>> f.tell()
    5
    >>> f.close()
    
    Метода seek(позиција) поставува позиција во датотека.

    Код:
    >>> f = open("test.txt", "r")
    >>> f.tell()
    0
    >>> f.seek(8)
    8
    >>> f.read(1)
    '5'
    >>> f.tell()
    9
    >>> f.close()
    
    Добра практика при работа со датотеки е употребата на with операторот. Кога го користите, не треба да ја затворите датотеката, кога ќе завршите со работа. Оваа операција ќе се изврши автоматски.

    Код:
    >>> with open("test.txt", "r") as f:
    ... for line in f:
    ... print(line)
    ...
    1 2 3 4 5
    Work with file
    Test string
    >>> f.closed
    True
    
     
    На psyside, moongose, shifty и уште 2 други им се допаѓа ова.
  13. Fatal1ty_

    Fatal1ty_
    Großmeister

    21,473
    25,515
    28 Февруари 2008
    Машко
    Experienced Web Developer
    Python Водич за почетници 13/15

    13.0 Модули и пакети

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

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

    13.1 Модули во Python
    • Што е тоа модул во Python?
    Модул во Python е датотека со екстензија .py. Модулите се дизајнирани да ги чуваат често користените функции, класи, константи и слично. Можете условно да ги одделите модулите и програмите: програми се наменети за итен почеток и модули за нивно внесување на други програми. Вреди да се напомене дека модулите можат да бидат напишани не само на Python, туку исто така и во други јазици (на пример, C).
    • Како да импортирате модули во Python?
    Најлесен начин за импортирање на модул во Python е да ја користите изградбата: import module_name
    Импорт и употреба на math модулот, кој содржи математички функцијата ќе изгледа вака.

    Код:
    >>> import math
    >>> math.factorial(5)
    120
    
    Веднаш можете да увезете неколку модули одеднаш, за ова ви се потребни раздвојување со запирка меѓу модулите и користење на едно import.

    import module_name, module_name2, module_name3

    Код:
    >>> import math, datetime
    >>> math.cos(math.pi/4)
    0.707106781186547
    >>> datetime.date(2017, 3, 21)
    datetime.date(2017, 3, 21)
    
    Ако сакате да поставите псевдоним за модулот во вашата програма, можете да ја користете оваа синтакса:

    import module_name as new_name

    Код:
    >>> import math as m
    >>> m.sin(m.pi/3)
    0.866025403784438
    
    Користење на било кој од горенаведените пристапи, кога повикувате функција од импортиран модул, секогаш треба да го наведете името на модулот (или псевдоним). Со цел да се избегне ова, направете импорт преку изградбата: from … import…

    from module_name import object_name

    Код:
    >>> from math import cos
    >>> cos(3.14)
    0.999998731727539
    
    Во овој случај, само одреден објект се импортира (во нашиот пример: функција cos), другите функции не се достапни, дури и ако го повикате името на модулот кога ги повикувате.

    Код:
    >>> from math import cos
    >>> cos(3.14)
    -0.999998731727539
    >>> sin( 3.14 )
    Traceback (most recent call last):
    File "<pyshell#2>" , line 1, in < module >
    sin( 3.14 )
    NameError : name 'sin' is not defined
    >>> math.sin(3.14)
    Traceback (most recent call last):
    File "<pyshell#3>" , line 1, in < module >
    math.sin(3.14)
    NameError : name 'math' is not defined
    
    За импортирање на неколку функции од модулот, можете да ги подредите одвојувајќи со запирка.

    from module_name import object_name, object_name2, object_name3

    Код:
    >>> from math import cos, sin, pi
    >>> cos(pi/3)
    0.500000000000000
    >>> sin(pi/3)
    0.866025403784438
    
    На импортираните објекти можете да им задате псевдоним

    from module_name import object_name as alias_name

    Код:
    >>> from math import factorial as f
    >>> f(4)
    24
    
    Доколку сакате да ги импртирате сите функции, класи и.т.н од одреден модул, тогаш ќе ја користите следнава форума from … import …

    from module_name import *

    Код:
    >>> from math import *
    >>> cos(pi/2)
    6.123233995736766e-17
    >>> sin(pi/4)
    0.707106781186547
    >>> factorial(6)
    720
    
    13.2 Пакети во Python
    • Што се тоа пакети во Python?
    Пакетот во Python е директориум кој вклучува други директориуми и модули, но со дополнителна датотека која содржи _init__.py. Пакетите се користат за создавање на именски простор, кој ви овозможува да работите со модули преку индикација на гнездење (преку точка).
    За да импортирате пакети, користете ја истата синтакса како и за работа со модули.
    • Користење на пакети во Python
    Да ја разгледаме следнава структура на пакети:

    Код:
    fincalc
    |-- _init__.py
    |-- simper.py
    |-- compper.py
    |-- annuity.py
    
    Пакетот fincal содржи во себе модули за работа со едноставни проценти (simper.py), сложени проценти (compper.py) и ануитети (annuity.py).

    За користење на функции од модулот за работа со прости проценти, можете да користите една од следниве варијанти:
    Код:
    import fincalc.simper
    fv = fincalc.simper.fv(pv, i, n)
    
    Код:
    import fincalc.simper as sp
    fv = sp.fv(pv, i, n)
    
    Код:
    from fincalc import simper
    fv = simper.fv(pv, i, n)
    
    Датотеката _init__.py може да биде празна или да содржи променлива _all__, складирање листа на модули што се импортираат кога се вчитуваат преку конструкција

    from module_name import *

    На пример во нашиот служај соджиината на __init__.py може да биде во ваква форма:

    Код:
    __all__ = ["simper", "compper", "annuity"]
    
     
    На shifty, psyside, moongose и уште 2 други им се допаѓа ова.
  14. Fatal1ty_

    Fatal1ty_
    Großmeister

    21,473
    25,515
    28 Февруари 2008
    Машко
    Experienced Web Developer
    Python Водич за почетници 14/15

    14.0 Класи и објекти

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

    14.1 Основни поими за објективно-ориентирано програмирање.

    Објективно-ориентирано програмирање - (OOP) е методологија за развојот на софтвер базиран на поимот класа и објект, додека самата програма е создадена како збир на објекти, кои комуницираат едни со други и со надворешниот свет. Секој објект е пример на класа. Класите формираат хиерархии. Постојат три главни "столбови" на ООП - тоа е енкапсулација, наследување и полиморфизам.
    • Енкапсулација - Под енкапсулација се подразбира множество во рамките на еден ентитет(класа) одредени податоци и методи за работа со нив (и не само тоа). На пример, може да се определува класата "фрижидер", која ќе ги содржи следните податоци: производител, волумен, број на комори, потрошувачката на енергија итн. и методи: отворете/затворете го фрижидерот, вклучете/исклучите. Класата станува нов тип на податок во рамките на програмата што се развива. Можете да создаде променливи на овој нов тип, такви променливи се нарекуваат објекти.
    • Наследување - Под наследство се подразбира можноста за создавање на нова класа врз основа на постоечки. Наследството подразбира постоење на врска "е" помеѓу класа како наследник и класа како родител. Во овој случај, класата на дете ќе ги содржи истите атрибути и методи како база класа, но може (и треба) да се прошири преку додавање на нови методи и атрибути. Може да се дефинира пример на базична класа која покажува наследство класа "автомобил" со атрибути: маса, моќност на моторот, волумен резервоар за гориво и методи: стартување и пригушување. Оваа класа може да има потомок - "Камион", ќе ги содржи истите атрибути и методи како класата "автомобил" и дополнителни својства: бројот на оските, капацитетот на компресорот и.т.н
    • Полиморфизам - Полиморфизмот ни овозможува да ги третираме објектите што ги имаат истиот интерфејс, без оглед на внатрешната имплементација на објектот. На пример, со објект на класата "камион" можете да ги направите истите операции како и со објект на класата "автомобил", т.е Првиот е наследник на вториот, додека обратното не е точно (барем не секогаш). Со други зборови полиморфизмот вклучува различна примена на методи со исто име. Тоа е многу корисно при наследувањето, кога во класата наследникот може да ги редефинира методите на родителската класа.

    14.2 Класи во Python
    • Создавање на класи и објекти
    Создавањето на класи во Python започнува со class. Вака ќе изгледа прост приемр на класа.

    Код:
    class C :
        pass
    
    Класата се состои од реклама (class наставка), име на класа (во нашиот случај ова е името C) и телото на класата која содржи атрибути и методи (во нашата едноставна класа има само една инструкција pass).
    За да креирате класен објект, мора да го користите следново синтакса:

    object_name = class_name ()

    А класа може да содржи атрибути и методи. Подолу е класата, Таа содржи атрибути color, width, height.

    Код:
    class Rectangle :
        color = “green”
        width = 100
        height = 100
    
    Можете да пристапите до класата со користење на следниов обзац:

    object_name.attribute

    Код:
    rect1 = Rectangle()
    print (rect1.color)
    
    Ајде да додадеме метод на нашата класа. Методот е функција внатре во класата, изведување на одредена работа, која, најчесто, вклучува пристап на атрибутите на создадениот објект. На пример, на нашата класа Rectangle, можете да додадете Метод кој ја разгледува областа на правоаголник. За да се знае методот во класата, со кој објект работи (ова е неопходно за пристап до атрибутите:
    ширина (width) и висина (height)), првиот аргумент треба да биде усвоен параметар self, преку кој тој може да пристапи до неговите податоци.

    Код:
    class Rectangle :
        color = "green"
        width = 100
        height = 100
        def square (self):
            return self .width * self .height
    
    Финалната работа на нашата програма која прикажува работа со атрибути и методи ќе изгледа вака:

    Код:
    class Rectangle :
        color = "green"
        width = 100
        height = 100
        def square (self):
            return self .width * self .height
    rect1 = Rectangle()
    print (rect1.color)
    print (rect1.square())
    rect2 = Rectangle()
    rect2.width = 200
    rect2.color = "brown"
    print (rect2.color)
    print (rect2.square())
    
    • Конструктор на класи
    Конструкторот на класа ви овозможува да поставите одредени параметри на објектот кога е тој создаден. Значи, станува возможно да се креираат објекти со веќе однапред специфицирани атрибути. Конструкторот на класа е методот: __init__(self)

    На пример, за да може да ја наведете боја, должина и ширина на правоаголник кога ќе го креирате, додајте го следниот конструктор во класата Rectangle:

    Код:
    class Rectangle :
        def _init__ (self, color = "green", width = 100, height = 100):
            self .color = color
            self .width = width
            self .height = height
        def square (self):
            return self .width * self .height
    rect1 = Rectangle()
    print (rect1.color)
    print (rect1.square())
    rect1 = Rectangle( "yellow" , 23 , 34 )
    print (rect1.color)
    print (rect1.square())
    
    14.3 Наследување

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

    Синтактички, создавање на класа со нејзиниот родител/и е како што следува:

    class class_name (parent_name1, [parent_name2, ..., parent_name])

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

    Код:
    class Figure :
        def __init__(self , color):
            self .color = color
        def get_color (self):
            return self .color
    class Rectangle (Figure):
        def __init__(self , color , width = 100 , height = 100):
            super ().__init__(color)
            self .width = width
            self .height = height
        def square(self):
            return self .width * self .height
    rect1 = Rectangle("blue")
    print (rect1.get_color())
    print (rect1.square())
    rect2 = Rectangle("red", 25, 70)
    print (rect2.get_color())
    print (rect2.square())
    
    14.4 Полиморфизам

    Како што веќе беше споменато во воведот во рамките на ООП, полиморфизмот, како по правило, се користи од позицијата на надминување на методите на основната класа во класата наследник. Најлесен начин да се погледне на ова е пример. Додов во нашата база методот info(), кој печати резиме на информации за објектот од класата Figure и го редефинира овој метод во класата Rectangle, каде што додаваме дополнителни податоци и излез.

    Код:
    class Figure :
        def __init__(self , color):
            self .color = color
        def get_color(self):
            return self .color
        def info(self):
            print("Figure")
            print("Color: " + self.color)
    class Rectangle(Figure):
        def __init__(self, color, width = 100, height = 100):
            super ().__init__(color)
            self.width = width
            self.height = height
        def square(self):
            return self .width * self .height
        def info(self):
            print ("Rectangle")
            print ("Color: " + self .color)
            print ("Width: " + str (self .width))
            print ("Height: " + str (self .height))
            print ("Square: " + str (self .square()))
    fig1 = Figure("green")
    print(fig1.info())
    rect1 = Rectangle("red", 24, 45 )
    print(rect1.info())
    
    Со таков класен наследник може да се прошири и измени функционалноста на родителска класа.
     
    На shifty, psyside, moongose и уште 2 други им се допаѓа ова.
  15. Fatal1ty_

    Fatal1ty_
    Großmeister

    21,473
    25,515
    28 Февруари 2008
    Машко
    Experienced Web Developer
    Python Водич за почетници 15/15

    15.0 Интератори и генератори


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

    15.1 Интератори во Python

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

    Главното место за користење на итераторите е циклусот for. Ако преаработувате некои елементите во некоја листа или симболи во линија со помош на циклусот for, всушност ова значи дека при секоја повторување на циклусот, итераторот содржан во линијата/листата, со барање да се изведе следниот елемент, ако во објектот нема повеќе елементи, тогаш итераторот генерира исклучочи, обработени во рамките на циклусот незабележано од страна на корисникот.

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

    Код:
    >>> num_list = [ 1 , 2 , 3 , 4 , 5 ]
    >>> for i in num_list:
        print (i)
    1
    2
    3
    4
    5
    
    Како што веќе рековме, објекти чии елементи може да се преминат во циклус, содржат итераторски објект. За таа цел потребно е на функцијата iter(), и да го извадиме следниот елемент од итераторот - next() функцијата.

    Код:
    >>> itr = iter(num_list)
    >>> print(next(itr))
    1
    >>> print(next(itr))
    2
    >>> print(next(itr))
    3
    >>> print(next(itr))
    4
    >>> print(next(itr))
    5
    >>> print(next(itr))
    Traceback (most recent call last):
    File "<pyshell#12>" , line 1 , in <module>
    print(next(itr))
    StopIteration
    
    Како што можете да видите од горенаведениот пример, next(itr) функција секој пат го враќа следниот елемент од листата, и кога овие елементи завршуваат, StopIteration се генерира.

    15.2 Креирање сопствен интератор

    Ако треба да работите околу елементите внатре во објектот на вашата сопствена класа, треба да го изградите вашиот итератор. Креирајте класа чиј објект ќе биде итератор кој излегува одреден број на единици кои корисникот одредува кога објектот е создаден. Оваа класа ќе содржи конструктор кој на влез прифаќа број на единици и методот ___next__ (), без него примерите на оваа класа нема да бидат итератори.

    Код:
    def __init__(self , limit):
    self.limit = limit
    self.counter = 0
    def __next__(self):
    if self .counter < self .limit:
    self .counter += 1
    return 1
    else :
    raise StopIteration
    s_iter1 = SimpleIterator(3)
    print(next(s_iter1))
    print(next(s_iter1))
    print(next(s_iter1))
    print(next(s_iter1))
    
    Во нашиот пример, четвртиот повик кон next() ќе даде исклучување StopIteration. Ако сакаме, со дадениот објект да работиме во циклусот for, во класата SimpleIterator, додадете __iter__() метод, кој враќа итератор, во овој случај овој метод мора да врати self.

    Код:
    class SimpleIterator :
    def __iter__(self):
    return self
    def __init__(self, limit):
    self .limit = limit
    self .counter = 0
    def __next__(self):
    if self .counter < self .limit:
    self .counter += 1
    return 1
    else :
    raise StopIteration
    s_iter2 = SimpleIterator(5)
    for i in s_iter2:
    print(i)
    
    15.3 Генератори

    Генератори во голема мера може да ја поедностави дизајнерската работа ха итераторот. Во претходните примери за да се изгради итератор и да работите со него, создадовме посебна класа.
    Генератор е функција која, кога е повикана функцијата next() го враќа следниот објект според алгоритам за неговото работење. Наместо клучниот збор return во генераторот се користи yield. Најлесен начин да се работи е генератор ќе го погледнете во примерот.
    Ајде да напишеме функција која генерира неопходен број на единици.

    Код:
    def simple_generator(val):
    while val > 0 :
    val -= 1
    yield 1
    gen_iter = simple_generator(5)
    print(next(gen_iter))
    print(next(gen_iter))
    print(next(gen_iter))
    print(next(gen_iter))
    print(next(gen_iter))
    print(next(gen_iter))
    
    Оваа функција ќе работи исто како и класата SimpleIterator од претходниот пример.

    Клучната точка за разбирање на работата на генераторите е кога ја повикувате yield, функцијата не ја прекинува својата работа, но "ја замрзнува" до следното повторување што се активира од next() функцијата. Ако во вашиот генератор, некаде го користите return клучниот зборор, до тоа место ќе ја враќа StopIteration и ако објавите било какви информации во return, тогаш тоа ќе биде додадено во описот на StopIteration.

    Со ова е комплетиран целиот курс. Ви четитам! вие ја научивте основата на python и можете да пробате да создадете еднставни кодови кои ќе ви бидат како тренинг...

    ви благодарам за одвоеното време и за поддршакта што ми ја пруживте во изминативе месец дена.
    Среќно!
     
    На shifty, moongose, psyside и уште 2 други им се допаѓа ова.
Статус на темата:
Затворена за нови мислења.

Сподели

Вчитување...