Programski jezik Python: Tutorijal #1

Python je opšte namenski programski jezik koji je dobio ime po Monty Python-u. On je jednostavan i neverovatno čitljiv. Odličan je za početnike i sve one koji žele da uplivaju u programerske vode. Postoje razne biblioteke koje su kreirane za njega  a tiču se matematike, fizike, analize podataka itd. Koristi se u raznim industrijama i upotrebljavaju ga kompanije kao što su Google, NASA, Reddit, Disney.

Python skriptu procesuira interpreter. Interpreter predstavlja program koji izvršava skriptu napisanu na jeziku koji prepoznaje interpreter, što je u ovom slučaju to Python.

Python programski jezik

Postoje 3 glavne verzije Python-a, to su 1.x, 2.x i 3.x. One su podeljene na verzije 2.7 i 3.3 i obe verzije su trenutno u upotrebi.

Kompatabilne promene su napravljene samo između glavnih verzija.  Kod koji je napisan za Python 3.x će garantovano da radi u svim budućim verzijama.

Tutorijali će obuhvatati Python 3.x verziju ali svakako nije teško da se promeni iz jedne verzije u drugu.

Python takođe ima nekoliko različitih implementacija, pisanih na različitim jezicima. Verzija korišćena u tutorijalima je CPython koja je inače najpopularnija. Ekstenzija za izvorne Python fajlove je .py

python
Source: Stack Overflow

Skidanje programa (download)

Prvi korak koji je potreban je da se skine Python program sa www.python.org/downloads. Program je besplatan.

Preporuka je da se skine verzija Python 3.x koja je kompatabilna sa vašim operativnim sistemom. Onog trenutka kada instalirate program, Python konzoli može da se pristupi na više načina, uključujući command line gde se direktno pokreće Python interpreter ili korišćenjem GUI koji dolazi instaliran sa instalacijom samog programa i zove se IDLE (an Integrated DeveLopment Environment for Python).

Tokom narednih tutorijala koristiće se oba načina ali za početak uz primere biće pokrenut IDLE, jer je najlakši.

Nakon pokretanja IDLE, trebalo bi da vidite command prompt sa tri zvezdice sa leve strane, ukucajte ono što je obojeno crvenim slovima i pritisnite ENTER (primer i slika u nastavku).

python shell idle

print ("Hello World")
 
>>> Hello world!

Python konzola

Python konzola je program koji omogućava da unesete jednu liniju Python koda, koju možete da ponavljate. Ovo je poznato i kao REPL (read eval print loop). Nakon što se rezultat za kod  print (“Hello World”) prikazao, možete da ponovo unesete kod i dobićete isti rezultat. Pokušajte da unesete isti kod ali sa različitim tekstom itd.

print('Dobro dosli na blog dusanmilosevic.com!') 

>>> Dobro dosli na blog dusanmilosevic.com!
print('Srecno ucenje Pythona') 

>>> Srecno ucenje Pythona

Kada završite sa Python konzolom, biće potrebno da je zatvorite. IDLE možete zatvoriti na način kao što zatvarate svaki drugi program u vašem operativnom sistemu dok druge konzole će morati da se zatvore drugačijim metodama.

Da zatvorite konzolu ukucajte

quit()

Jednostavne operacije

Python ima mogućnost da izvršava kalkulacije. Na primer, unesite direktno kalkulaciju u Python konzolu i dobićete rezultat

>>> 2+2
 
4 

>>> 5+4-3 

6

Razmaci između plusa i minusa su opcioni i nisu neophodni. Kod će raditi bez obzira da li ste stavili razmake ili niste.

Python takođe podržava množenje i deljenje, korišćenjem znaka * (asterisk) kažete programu da množi dok korišćenjem / (forward slash) da podeli. Probajte na primer:

2*(3+4) 

>>> 14 

10/2 

>>> 5.0

Korišćenjem / (forward slash) da bi se podelili brojevi, dobija se decimalan zapis (iliti float kako se to stručno naziva u programiranju).

Minus znak program razume kao negativan broj. Operacije se izvršavaju sa negativnim brojevima isto kao i sa pozitivnim brojevima.

-7 

>>> -7 

(-7+2)*(-4) 

>>> 20

Plus (+) znak može takođe da bude stavljen ispred brojeva ali to nema efekta i najčešće se koristi da se prikaže da je broj pozitivan kako bi se povećala čitljivost samog koda.

Deljenje sa 0 u Python-u dovodi do greške i ne može da se izvrši.

11/0 

>>> Traceback (most recent call last): 
>>> File "<stdin>", line 1, in <module> 
>>> ZeroDivisionError: division by zero

U Python-u, poslednja linija koda greške predstavlja tip greške. Na ovo treba posebno obratiti pažnju jer u većini slučajeva ako se razlog greške pročita pažljivo, može se lako otkloniti i rešiti problem.

Brojevi koji nisu celi (floats)

Floats se koriste u Python-u da predstave brojeve koji nisu celi. Primer brojeva koji predstavlju floats su na primer 0.5 i -2.555488. Oni mogu da budu direktno kreirani tako što se ubaci broj sa decimalnim mestima ili tako što se koristi operacija deljenja celih brojeva. Dodatne nule na kraju su ignorisane.

>>> 3/4 
0.75 

>>> 9.8765000 
9.8765 

>>> 8/2 
4.0 

>>> 6*7.0 
42.0 

>>> 4+1.65 
5.65

Treba imati na umu da kompjuteri ne mogu da čuvaju brojeve koji nisu celi (floats) perfektno tačno i na isti način zbog čega ne možemo da napišemo celi decimalni zapis npr 1/3 (0.333333333333333…). Ovo je napomena jer zbog ovoga često dolazi do nepotrebnih bagova.

Stepenovanje

Pored sabiranja, oduzimanja, množenja i deljenja, Python takođe podržava i stepenovanje i ova operacija se izvršava tako što se koriste dva znaka  ** (asterisk).

>>> 2**5 
32
 
>>> 9**(1/2) 
3.0

Količnik i ostatak

Da bi se utvrdio količnik i ostatak od deljenja, koristi se dva forward slasha // i znak za procenat %. Obe operacije je moguće koristiti i sa celim i sa brojevima koji nisu celi.

Kod u narednom primeru pokazuje da se 6 sadrži 3 puta u 20, dok u drugom primeru, ostatak kad se 1.25 podeli sa 0.5 je 0.25.

>> 20//6
3

>>> 1.25%0.5
0.25

Tekst (strings)

Ako želite da koristite tekst u Python-u, moraćete da koristite string (najosnovniji tip u Python-u za tekst). String se kreira tako što se unese tekst između jednog ili dva znaka navoda.

"Ucenje Pythona je interesantno!" 
>>> 'Ucenje Pythona je interesantno!' 

'Ucenje preko interneta' 
>>> 'Ucenje preko interneta'

Input i output funkcije

Program procesuira unos i dostavlja rezultat. U Python-u se koristi print funkcija sa kojom se dobija rezultat i prikazuje se tekstualni rezultat.

print(1+1) 
>>> 2 

print("Dusan\nMilosevic") 
>>> Dusan 
>>> Milosevic

Da bi dobio input od korisnika iz Python-a, može se koristi input funkcija. Funkcija vraća rezultat onoga što je korisnik uneo kao tekst.

input("Upisite nesto: ")
>>>  Upisite nesto: Ovo je\nkorisnik uneo!

'Ovo je \\ntkorisnik uneo!'

Operacije sa tekstom-strings

Tekst u Python-u, se može dodati sa celim i brojevima koji nisu celi i to se može uraditi na dva načina:

'ucenje'+'internet'
>>> 'ucenjeinternet'

print("ucenje"+", "+"internet")
>>> Ucenje, internet

Iako tekst sadrži broj, on je svakako dodat kao tekst a ne kao ceo broj. Dodavanje teksta broju rezultuje ERROR iako mogu izgledati slično, oni su dve različite stvari. Objašnjenje u nastavku:

>>> "2"+"2" 
'22'

>>> 1+'2'+3+'4' 
Traceback (most recent call last): 
File "<stdin>", line 1, in <module> 
TypeError: unsupported operand type(s) for +: 'int' and 'str'

Tekst (strings) takođe mogu biti pomnoženi sa celim brojevima. Ovo proizvodi ponovljenu verziju originalnog teksta. Red teksta i celog broja nije bitan.

nepisano pravilo je da tekst uvek dolazi prvi

Tekst ne može biti pomnožen sa drugim tekstom. Tekst takođe ne može da se pomnoži sa brojevima koji nisu celi.

>>> print('beograd'* 3)
beogradbeogradbeograd
>>> 4*'2' 
'2222' 

>>> '2'*'3' 
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can't multiply sequence by non-int of type 'str' 

>>> 'tutorijal' * 7.0 
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can't multiply sequence by non-int of type 'float'

Konverzija tipa

U Python-u, nemoguće je kompletirati određene operacije. Na primer, ne može se dodati dva teksta koja sadrže na primer 2 i 3 i očekivati da se dobije rezultat 5 kao ceo broj, jer će operacija da se izvrši na tekstu i samim tim će rezultat biti 23 a ne 5.

Solucija za ovaj primer je konverzija tipa i u primeru iz nastavka se koristila funkcija int.

>> "2"+"3"
'23'

>>> int("2")+int("3")
5

U Python-u smo do sada koristili tipove:

-celih brojeva (integers)

-brojeva koji nisu celi (floats) 

-teksta (strings)

Funkcije koje konvertuju ove tipove su int, float i str.

Još jedan primer tipa konverzije je uključivanje input korisnika (koji je tekst/string) u brojeve (integers ili floats) da bi se obavila kalkulacija.

>>> float(input("Upisati broj: ")) + float(input("Upisati jos jedan broj: ")) 
Upisati broj: 40 
Upisati jos jedan broj: 2 
42.0

Varijable

Varijable igraju jako bitnu ulogu u mnogim programskim jezicima što je slučaj i sa Python-om. Varijable dozvoljavaju da se čuvaju vrednosti kojima je pripisano ime a koje se mogu pozivati kasnije tokom korišćenja.

Za dodeljivanje varijable koristi se znak jednakosti =. Za razliku od dosadašnjih linija koda koje su spomenute kroz primere, tekst dodeljivanja ne proizvodi nikakav rezultat u Python konzoli.

>>> x=7

>>> print(x)
7

>>> print(x+3)
10

Varijable mogu biti ponovo dodeljene koliko god puta to bilo potrebno u cilju da im se promeni vrednost. U Python-u, varijabile nemaju specifican tip tako da se mogu dodeliti tekstu (string) i kasnije se može dodeliti broju iste varijable.

>>> x=123.456

>>> print(x)
123.456

>>> x="Analitika i vizualizacija"

>>> print(x+"!")
Analitika i vizualizacija!

Postoje određena ograničenja u smislu karaktera koji se mogu koristiti za imena Python varijabli. Jedini karakteri koji su dozvoljeni su slova, brojevi i donje crte. Takođe ne mogu počinjati sa brojevima. Ako se ova pravila nepoštuju, kod će rezultovati sa greškom i biće potrebno da se ispravi.

>>> this_is_a_normal_name=7 

>>> 123abc=7 
SyntaxError: invalid syntax 

>>> razmaci nisu dozvoljeni
SyntaxError: invalid syntax

Varijabla koja nije dodeljana a korisnik pokušava da je pozove kroz kod će rezultovati greškom. Može se koristiti del da se izbriše varijabla, što znači da je referenca od imena vrednosti izbrisana i nakon toga ako se pokuša sa korišćenjem te varijable kod će takođe rezultovati greškom.

Izbrisane varijable se mogu ponovo dodeliti kasnije po standardnom pomenutom postupku iz gornjeg članka.

Takođe može se uzeti vrednost za dodeljivanje varijable i od korisničkog unosa (input-a).

>>> test=input("Ukucaj broj: ") 
Enter a number: 23

>>> print(test) 
23

In place operatori

Ovi operatori dozvoljavaju da napišete kod kao na primer

'x = x + 3'

ili

'x += 3'

Ista stvar je moguća sa drugim operacijama kao što su – ,*, /, %

>>> x=2 

>>> print(x) 
2 

>>> x+= 3 

>>> print(x) 
5

Ovi operatori mogu da se koriste na tipovima pored brojeva, kao na primer tekst (strings)

x="dobro"

>>>print(x)
dobro

>>> x+="dosli"

>>> print(x)
dobrodosli

Napomena, dosta drugih programskih jezika ima specijalne operatore kao što su ++ kao prečica za x+=1 ono što treba zapamtiti je da Python nema ovu funkciju.

Korišćenje Editor-a

Do sada, koristili smo Python sa njegovom konzolom, gde smo upisivali po jednu liniju koda. Aktuelni programi su kreirani drugačije gde su linije koda napisane u jednom fajlu koji se nakon toga izvršavaju sa Python interpreter-om.

U IDLE-u, ovo može da se uradi tako što će da se kreira novi fajl, napiše par linija koda, sačuva se fajl i nakon toga se izvrši. Ovo može da se uradi ili kroz MENU ili preko tastature, prečicama CTRL+N, CTRL+S i F5.

Svaka linija kod u fajlu će biti izvršena.

x=7

x=x + 2

print(x)

O autoru

Dušan Milošević

Curious digital analyst passionate about analytics, funk/disco music and new travel destinations. Always chasing the spark and searching for signal in the noise, combining technical know-how with digital marketing looking for actionable insights.
Proactive thinker, with the ability to adapt and learn quickly. Collaborative, with cross-functional team experience working with product, development and client-side teams.

2 komentara

This site uses Akismet to reduce spam. Learn how your comment data is processed.

  • U šestom sam razredu i krećemo da radimo program Python. Ovaj tekst mi je jako pomogao da razumem Python i njegovu upotrebu

  • Postovani gospodine, molio bih vas za jednu pomoc. Na kompijuteru imam instaliran Python 3.8.2 sa instaliranim bibliotekama pygame i pygamebg.
    Na linku https://petlja.org/biblioteka/r/lekcije/pygame-prirucnik/crtanje-cas6 zadatak cvet upisem kod i sve funkcionise besprekorno. Kada isti kod upisem u programu python pojavi mi se sledeca greska
    Traceback (most recent call last):
    File “E:\Pajton\Cvet.py”, line 46, in
    pg.draw.circle(prozor, ZUTA, O, r)
    TypeError: integer argument expected, got float.

    Evo saljem vam i kod koji upisujem
    import math
    import pygame as pg, pygamebg

    (sirina, visina) = (400, 400) # uključujemo prozor dimenzije 400×400 piksela
    prozor = pygamebg.open_window(400, 400, “Blue circle”)

    # boje koje ćemo koristiti
    BELA = (255, 255, 255)
    ZUTA = (255, 255, 0)
    ROZE = (255, 200, 200)

    # bojimo pozadinu u belo
    prozor.fill(BELA)

    # koordinate centra prozora
    (cx, cy) = (sirina / 2, visina / 2)

    # precnici krugova – duzina stranice pravilnog sestougla u cijim se
    # temenima nalaze centri krugova
    a = 100
    # visina karakteristicnog trougla sestougla
    h = a * math.sqrt(3) / 2

    # sva temena šestougla dele ove koordinate
    x1 = cx – a
    x2 = cx + a/2
    x3 = cx – a/2
    x4 = cx + a
    y1 = cy – h
    y2 = cy
    y3 = cy + h

    # koordinate temena šestougla
    O = (cx, cy)
    A1 = (x4, y2)
    A2 = (x2, y1)
    A3 = (x3, y1)
    A4 = (x1, y2)
    A5 = (x3, y3)
    A6 = (x2, y3)

    # poluprecnik krugova
    r = a / 2

    # iscrtavamo krugove
    pg.draw.circle(prozor, ZUTA, O, r)
    pg.draw.circle(prozor, ROZE, A1, r)
    pg.draw.circle(prozor, ROZE, A2, r)
    pg.draw.circle(prozor, ROZE, A3, r)
    pg.draw.circle(prozor, ROZE, A4, r)
    pg.draw.circle(prozor, ROZE, A5, r)
    pg.draw.circle(prozor, ROZE, A6, r)

    # prikazujemo prozor i čekamo da ga korisnik isključi
    pygamebg.wait_loop()
    import math
    import pygame as pg, pygamebg

    (sirina, visina) = (400, 400) # uključujemo prozor dimenzije 400×400 piksela
    prozor = pygamebg.open_window(400, 400, “Blue circle”)

    # boje koje ćemo koristiti
    BELA = (255, 255, 255)
    ZUTA = (255, 255, 0)
    ROZE = (255, 200, 200)

    # bojimo pozadinu u belo
    prozor.fill(BELA)

    # koordinate centra prozora
    (cx, cy) = (sirina / 2, visina / 2)

    # precnici krugova – duzina stranice pravilnog sestougla u cijim se
    # temenima nalaze centri krugova
    a = 100
    # visina karakteristicnog trougla sestougla
    h = a * math.sqrt(3) / 2

    # sva temena šestougla dele ove koordinate
    x1 = cx – a
    x2 = cx + a/2
    x3 = cx – a/2
    x4 = cx + a
    y1 = cy – h
    y2 = cy
    y3 = cy + h

    # koordinate temena šestougla
    O = (cx, cy)
    A1 = (x4, y2)
    A2 = (x2, y1)
    A3 = (x3, y1)
    A4 = (x1, y2)
    A5 = (x3, y3)
    A6 = (x2, y3)

    # poluprecnik krugova
    r = a / 2

    # iscrtavamo krugove
    pg.draw.circle(prozor, ZUTA, O, r)
    pg.draw.circle(prozor, ROZE, A1, r)
    pg.draw.circle(prozor, ROZE, A2, r)
    pg.draw.circle(prozor, ROZE, A3, r)
    pg.draw.circle(prozor, ROZE, A4, r)
    pg.draw.circle(prozor, ROZE, A5, r)
    pg.draw.circle(prozor, ROZE, A6, r)

    # prikazujemo prozor i čekamo da ga korisnik isključi
    pygamebg.wait_loop()
    Ako ste u mogucnosti da mi pomognete bio bih veoma zahvalan.
    Srdacan pozdrav