Osnove programiranja - Python

Komentari

In [1]:
# Ovo je komentar u jednoj liniji
"""
Ovo je
komentar u 
više 
linija
"""
#print ("Hello, World")
print ("Hello, World") # Ovo je komentar u jednoj liniji
Hello, World

Ispis podataka

In [2]:
print(10)
10
In [3]:
print("String")
String
In [4]:
a = 5
print(a)
5

Promenljive

Primeri dodele vrednosti

In [5]:
x=5
y = 1.0
pi = 3.14
x = 2*x
poruka= "Programiranje je lepo" 
ime = "Jovana"
pozdrav = "Zdravo " + ime

print (type(x))
print (type(y))
print (type(pi))
print (type(poruka))
print (type(pozdrav))
print (pozdrav)
<class 'int'>
<class 'float'>
<class 'float'>
<class 'str'>
<class 'str'>
Zdravo Jovana

Primer - višestruka dodela vrednosti

In [6]:
a, b, poruka = 3, 4, 'jednostavno zar ne!'
print(a, b, poruka)
3 4 jednostavno zar ne!

Primer

Razmena vrednosti može se realizovati preko naredbe višestruke dodele vrednosti, što predstavlja optimalno rešenje u stilu jezika Python.

In [7]:
a = 10
b = 50
a, b = b, a
print("a =", a)
print("b =", b)
a = 50
b = 10

Aritmetički operatori

In [8]:
55-15
Out[8]:
40
In [9]:
2*10
Out[9]:
20
In [10]:
2**10
Out[10]:
1024
In [11]:
23/10
Out[11]:
2.3
In [12]:
23//10
Out[12]:
2
In [13]:
23%10
Out[13]:
3

Učitavanje podataka sa standardnog ulaza

In [14]:
ime = input("Kako se zoveš: ")
print(ime, "dobar dan!", sep=", ")
Kako se zoveš: Tijana
Tijana, dobar dan!

Primer

Napisati program koji za unete vrednosti (masu i visinu) izračunava index telesne mase (body mass index, bmi)

In [15]:
# izvršena je konverzija u int i float, jer funkcija input vraća string
masa = int(input ("Unesite telesnu masu u kilogramima: "))
visina = float(input ("Unesite visinu u metrima: "))
bmi = masa/(visina**2)
print ("Vaš indeks telesne mase je: ", bmi)
Unesite telesnu masu u kilogramima: 77
Unesite visinu u metrima: 1.8
Vaš indeks telesne mase je:  23.76543209876543

Formatiran ispis

In [16]:
n = 10
print('Kvadrat broja {} je {}.'.format(n,n**2))
Kvadrat broja 10 je 100.
In [17]:
x = 10
y = 50
print('x = {}, y = {}'.format(x, y))
x = 10, y = 50

Obrada izuzetaka

In [18]:
try:
    a = int(input("Unesite vrednost celog broja a: "))
    print(a)
except:
    print('Neispravna vrednost')
Unesite vrednost celog broja a: 10.0
Neispravna vrednost

Grananje If-else

In [19]:
# Za uneti broj ispitati da li je paran

a = int (input ('Unesite vrednost celog broja a: '))
if a % 2 == 0:
    print ('Broj je paran.')
else:
    print ('Broj je neparan')
Unesite vrednost celog broja a: 22
Broj je paran.
In [20]:
a = int(input('Unesite vrednost celog broja a:'))
if a % 3 == 0:
    print('Broj a je deljiv brojem 3')
elif a % 3 == 1:
    print('Broj a daje ostatak 1 pri deljenju sa brojem 3')
else:
    print('Broj a daje ostatak 2 pri deljenju sa brojem 3')
Unesite vrednost celog broja a:31
Broj a daje ostatak 1 pri deljenju sa brojem 3
In [21]:
try:
    a = int(input('Unesite vrednost celog broja a: '))
    if a % 3 == 0:
        print('Broj a je deljiv brojem 3')
    elif a % 3 == 1:
        print('Broj a daje ostatak 1 pri deljenju sa brojem 3')
    else:
        print('Broj a daje ostatak 2 pri deljenju sa brojem 3')
except:
    print('Neispravna vrednost broja a!')
Unesite vrednost celog broja a: 31.0
Neispravna vrednost broja a!

Petlje

Naredba for

In [22]:
for i in range(5): 
    print(i)
0
1
2
3
4
In [23]:
for i in range(5): 
    print("Zdravo!")
Zdravo!
Zdravo!
Zdravo!
Zdravo!
Zdravo!
In [24]:
for i in range(1,6): 
    print(i)
1
2
3
4
5
In [25]:
for i in range(5,51,5): 
    print(i)
5
10
15
20
25
30
35
40
45
50
In [26]:
for i in range(25,4,-5): 
    print(i)
25
20
15
10
5
In [27]:
for i in "banana": 
    print(i)
b
a
n
a
n
a

Primer

Napisati program kojim se za uneti prirodan broj n (n ≥ 1) prvo štampaju svi prirodni brojevi od 1 do n, pa onda svi parni brojevi od 1 do n i na kraju svi neparni brojevi od 1 do n.

In [28]:
n=int(input("Unesi ceo broj n:"))
for i in range(1,n+1):
    print(i, end=" ")
print()
for i in range(2,n+1,2):
    print(i, end=" ")
print()    
for i in range(1,n+1,2):
    print(i, end=" ")
print()
Unesi ceo broj n:20
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 
2 4 6 8 10 12 14 16 18 20 
1 3 5 7 9 11 13 15 17 19 
In [29]:
# Za prekid izvršenja petlje, bez obzira na ispunjenost uslova koristi se naredba break

for i in range(10):
    print(i)
    if i > 5:
        break
0
1
2
3
4
5
6
In [30]:
# Naredbom continue se prekida izvršavanje trenutne iteracije i prelazi na sledeću
for i in range(10):
    if i <= 5:
        continue
    print(i)
6
7
8
9

Naredba while

In [31]:
i = 0
while i < 5:
    print(i)
    i += 1 
0
1
2
3
4
In [32]:
br=0
while br<5:
    print('Zdravo!')
    br=br+1
Zdravo!
Zdravo!
Zdravo!
Zdravo!
Zdravo!

Primer

Izračunati zbir unetih brojeva. Brojeve unositi dok se ne unese 0.

In [33]:
x = int(input("Unesi broj: ")) 
s=0
while x != 0:
    s = s + x
    x = int(input("Unesi broj: "))
print("Zbir unetih brojeva je ", s)
Unesi broj: 10
Unesi broj: 5
Unesi broj: -2
Unesi broj: 16
Unesi broj: 21
Unesi broj: 0
Zbir unetih brojeva je  50

Funkcije

In [34]:
def saberi(a, b):
    c = a + b
    return c

print (saberi(10,50))
60
In [35]:
# Funkcija moze vratiti vise vrednosti
def minimum_i_maksimum(a, b):
    minimum = min(a,b)
    maksimum = max(a,b)
    return minimum, maksimum

a = - 10
b = - 22

mini, maksi = minimum_i_maksimum(a, b)
print(mini, maksi)
-22 -10

Liste

In [36]:
# lista celih brojeva
lista = [1, 3, 5, 7, 9] 
print(lista)
[1, 3, 5, 7, 9]
In [37]:
# lista stringova
zivotinje = ['pas','macka','mis','majmun','slon'] 
print (zivotinje)
['pas', 'macka', 'mis', 'majmun', 'slon']
In [38]:
lista=list(range(1,15))
print (lista)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
In [39]:
samoglasnici = ['a', 'e', 'i', 'o', 'u']
n = len(samoglasnici)
print('Dužina liste je: {}'.format(n))
Dužina liste je: 5

Iteracija kroz listu po indeksima

In [40]:
lista = [1, 2, 3, 4]
n = len(lista)

for i in range(0, n): # for i in range(len(lista))   [0,n) -> 0..n-1
    print(lista[i])
1
2
3
4

Iteracija kroz listu po elementima (foreach petlja)

In [41]:
lista = [1, 2, 3, 4]
n = len(lista)

for element in lista: 
    print(element)
1
2
3
4

Sortiranje liste - sort( )

In [42]:
A = [2, 6, 1, 9, 3, 5, 4]
A.sort()
print (A)
[1, 2, 3, 4, 5, 6, 9]

Obrtanje liste - reverse( )

In [43]:
A=[1, 2, 3, 4, 5, 6, 9]
A.reverse()
print (A)
[9, 6, 5, 4, 3, 2, 1]

Elementi liste, indeksiranje, izdvajanje podlisti

[polazni_indeks:zavrsni_index(n+1):korak]

In [44]:
lista = [1, 2, 3, 4]
print(lista[1:3]) 
[2, 3]
In [45]:
lista = [1, 2, 3, 4]
print(lista[1:4:2]) 
[2, 4]
In [46]:
lista = [1, 2, 3, 4] #  -4 -3 -2 -1
print(lista[-4:-1])  
[1, 2, 3]
In [47]:
lista= ['Ejda', 2, 'Tjuring', 4,'Bebidz', 6, 'Bul'] 
print (lista[2], lista[-1])
print (lista[1:5])
print (lista[2:])
print (lista[:5])
print (lista[12])
Tjuring Bul
[2, 'Tjuring', 4, 'Bebidz']
['Tjuring', 4, 'Bebidz', 6, 'Bul']
['Ejda', 2, 'Tjuring', 4, 'Bebidz']
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-47-b1c2148ad877> in <module>
      4 print (lista[2:])
      5 print (lista[:5])
----> 6 print (lista[12])

IndexError: list index out of range

Metode za rad sa listama

In [48]:
# Dodavanje elemenata na kraj liste –append 

lista = ["jabuka", "kruska", "banana"]
lista.append("kivi")
print (lista)
['jabuka', 'kruska', 'banana', 'kivi']
In [49]:
# Dodavanje elemenata na željenu poziciju –insert

lista = ["jabuka", "kruska", "banana"]
lista.insert(1, "kivi")
print(lista)
['jabuka', 'kivi', 'kruska', 'banana']
In [50]:
# Brisanje elementa iz liste –del, pop, remove

lista1 = ["jabuka", "kruska", "banana"]
lista1.remove("kruska")
print(lista1)

lista2 = [1, 2, 3, 4, 5, 6, 7]
lista2.pop() 
print(lista2)
lista2.pop(2)
print(lista2)
del lista2[0]
print (lista2)
['jabuka', 'banana']
[1, 2, 3, 4, 5, 6]
[1, 2, 4, 5, 6]
[2, 4, 5, 6]
In [51]:
# clear() – prazni listu
lista = ["jabuka", "kruska", "banana"]
lista.clear()
print(lista)
[]
In [52]:
# Broj ponavljanja elementa –count
L = [2, 3, 4, 1, 7, 2, 3, 1, 1, 0, 9, 1]
print (L.count(1))

formula1= ['Hamilton', 'Bottas', 'Vettel', 'Hamilton', 'Albon']
print (formula1.count('Hamilton'))
4
2
In [53]:
# Spajanje listi

lista1 = ["a", "b" , "c"]
lista2 = [1, 2, 3]
lista3 = lista1 + lista2
print(lista3)
['a', 'b', 'c', 1, 2, 3]
In [54]:
# Dodavanje elementa na pocetak liste
element = 0
lista = [1, 2, 3, 4]
print ([element] + lista)  
[0, 1, 2, 3, 4]

Stringovi

In [55]:
a = 'Ovo je string' 
b = "Ovo takođe"
print(a)
print (b)
Ovo je string
Ovo takođe
In [56]:
s1 = "Zdravo"
s2 = "Svete"
print(s1 + s2) 
print(s1 + " "+ s2) 
ZdravoSvete
Zdravo Svete
In [57]:
niska = 'aeiou'

for c in niska:
    print(c)
a
e
i
o
u

Napomena: Stringovi su nepromenljivi

In [58]:
predmet = 'osnove programiranja'
'''
Ne radi 
predmet[0] = 'O'
print(predmet)
'''

# Predloženo rešenje - formiranje nove reči na osnovu stare:
predmet1 = 'O'+ predmet[1:]
print(predmet1)
Osnove programiranja

Torke (Tuples)

In [59]:
# Torka je nepromenljiva lista - po formitranju ne može da se menja
torka = (1, 2, 3, 4)
print(torka)
(1, 2, 3, 4)
In [60]:
torka = (7, 3, 9, 2)
print(torka[2])
9
In [61]:
# Konverziju nekog objekta u torku
t1 = tuple([1,2,3])          
t2 = tuple('abcde')       
print (t1)
print (t2)
(1, 2, 3)
('a', 'b', 'c', 'd', 'e')

Pseudoslučajni brojevi

In [62]:
import random
x = random.random()
print(x)
0.9576900343695351
In [63]:
import random
x = random.randint(1,20)
print(x)
2
In [64]:
import random
x = random.randrange(0, 10) # [0, 10)
print(x)
6
In [65]:
lista = [10, 100, 1000, 10000]
izabrani = random.choice(lista)
print(izabrani)
10000
In [66]:
lista = [10, 100, 1000, 10000]
podskup = random.sample(lista, 3)
print(podskup)
[10000, 100, 1000]

Skupovi (Sets)

In [67]:
skup1 = {1,2,3,4,5} 
print (skup1)
# Funkcija set se može koristiti i za konverziju objekata u skupove. 

skup2 = set([1, 2, 3, 4]) 
print(skup2)

skup3 = set('ovo je test')
print(skup3)
{1, 2, 3, 4, 5}
{1, 2, 3, 4}
{'e', 's', 'j', 't', ' ', 'o', 'v'}

Primer

Brisanje duplih elemenata iz liste Možemo iskoristiti činjenicu da skupovi ne mogu imati ponovljene elemente.

In [68]:
L = [1,4,4,4,5,1,2,1,3]     # lista sa ponavljanjem elemenata
L = list(set(L)) # konvertujemo listu u skup, pa nazad u listu
print(L)
[1, 2, 3, 4, 5]

Rečnici (Dictionary, Dict)

In [69]:
dani={'Januar':31, 'Februar':28, 'Mart':31, 'April':30, 
      'Maj':31, 'Jun':30, 'Jul':31,'Avgust':31, 'Septembar':30, 'Oktobar':31, 'Novembar':30,'Decembar':31}


print(dani)
{'Januar': 31, 'Februar': 28, 'Mart': 31, 'April': 30, 'Maj': 31, 'Jun': 30, 'Jul': 31, 'Avgust': 31, 'Septembar': 30, 'Oktobar': 31, 'Novembar': 30, 'Decembar': 31}
In [70]:
dani={'Januar':31, 'Februar':28, 'Mart':31, 'April':30, 
      'Maj':31, 'Jun':30, 'Jul':31,'Avgust':31, 'Septembar':30, 'Oktobar':31, 'Novembar':30,'Decembar':31}


print(dani['Jun'])
30
In [71]:
recnik = {}
# ili
recnik = dict([])

# Dodavanje elemenata u recnik
recnik['a'] = 10
print(recnik['a'])
10
In [72]:
d = {'A':100, 'B':200}
d['A'] = 400 # Promena vrednosti
print (d)

d['C'] = 500 # Dodavanje novog elementa u rečnik
print (d)

del d['A'] # Brisanje elementa iz rečnika
print (d)
{'A': 400, 'B': 200}
{'A': 400, 'B': 200, 'C': 500}
{'B': 200, 'C': 500}
In [73]:
d = {'A':100, 'B':200}
# Kako od rečnika dobiti liste ključeva i vrednosti

print (list(d))      
print(list(d.values()))     
list(d.items()) # parovi (ključ,vrednost)
# Parovi koje vraća d.items() nazivaju se torke(tuples)
['A', 'B']
[100, 200]
Out[73]:
[('A', 100), ('B', 200)]
In [74]:
import math

print(math.sqrt(4))
print(math.ceil(2.3))
print(math.floor(5.3))
# ...
2.0
3
5

Datoteke

Rukovanje datotekama je važan deo svake aplikacije. Python ima nekoliko funkcija za kreiranje, čitanje, ažuriranje i brisanje datoteka. Ključna funkcija za rad sa datotekama u Python-u je funkcija open( ) .

Funkcija open( ) ima dva parametra naziv datoteke (sa apsolutnom ili relativnom putanjom) koja će se kreirati/čitati/menjati i režim korišćenja (engl. mode), način na koji će se datoteka koristiti .

Postoje četiri različita načina (režima) za otvaranje datoteke:

"r"- Read - Podrazumevana vrednost. Otvara datoteku za čitanje. Ako datoteka ne postoji javiće grešku.

"a" - Append - Ako datoteka ne postoji, kreira novi datoteku. Novi podaci se upisuju na kraj datoteke, ako datoteka postoji. Nije dopušteno čitanje iz datoteke. Pokazivač za pisanje u datoteku nalazi se na kraju datoteke.

"w" - Write - Otvara datoteku za pisanje, kreira datoteku ako ne postoji. Ako datoteka postoji, briše se sadržaj postojeće datoteke.

"x" - Create - Kreira navedenu datoteku, vraća grešku ako datoteka postoji.

"+" - Ako se doda ovaj znak, omogućava se čitanje i pisanje iz datoteka.

Pored toga, možete definisati sledeće parametre:

"t"- Tekst - Podrazumevana vrednost, režim teksta.

"b" - Binarno - Binarni režim (npr. slike)

Prilikom poziva funkcije open( ) parametar mode nije obavezan. Ako se ovaj parametar izostavi, podrazumevana vrednost je 'r'.

apsolutna putanja – potpuna putanja od particije sve do datoteke

relativna putanja – putanja koja nije potpuna, već se datotekama pristupa tako da se kao početni folder uzima foldre u kojem se nalazi skripta

In [75]:
f=open("demodatoteka.txt","x")
---------------------------------------------------------------------------
FileExistsError                           Traceback (most recent call last)
<ipython-input-75-28ea778f9421> in <module>
----> 1 f=open("demodatoteka.txt","x")

FileExistsError: [Errno 17] File exists: 'demodatoteka.txt'

Čitanje datoteke

Da bismo otvorili datoteku, koristimo ugrađenu open( ). Funkcija open( ) vraća objekat fajl, koji ima read( ) metod za čitanje sadržaja datoteke. Kako bismo pročitali datoteku, potrebno je pozvati f.read(size) metodu. Ova metoda čita podatke iz datoteke i vraća ih kao niz znakova. Parametar size je opcioni argument. U slučaju da je parametar size izostavljen ili pak negativan, tada se čita cela datoteka. Pretpostavimo da imamo datoteku kao na slici Screenshot%202021-11-07%20at%2022.25.50.png

In [76]:
f = open("demodatoteka.txt", "r")
sadrzaj_datoteke = f.read()
print(sadrzaj_datoteke)
Ovo je demo datoteka.
Programiranje je lepo!

Napomena:

Ako se datoteka nalazi na drugoj lokaciji, moraćete da navedete putanju datoteke.

In [77]:
try:
    f = open("demofile.txt", "r")
    sadrzaj_datoteke = f.read()
    print(sadrzaj_datoteke)
except:
    print("Greška! Tražena datoteka ne postoji.")
    
Greška! Tražena datoteka ne postoji.
In [78]:
f = open("demodatoteka.txt", "r")
print(f.read(5))
Ovo j

readline( ) metod

Možete vratiti jednu liniju koristeći readline( ) metod:

In [79]:
f = open("demodatoteka.txt", "r")
print(f.readline())
Ovo je demo datoteka.

In [80]:
# Prolazak kroz datoteku red po red
f = open("demodatoteka.txt", "r")
for x in f:
  print(x)
Ovo je demo datoteka.

Programiranje je lepo!

Zatvaranje datoteke

Dobra praksa je da uvek zatvorite datoteku kada završite sa njom.

In [81]:
f = open("demodatoteka.txt", "r")
print(f.read())
f.close()
Ovo je demo datoteka.
Programiranje je lepo!

Pisanje u datoteku

Da biste pisali u postojeću datoteku, morate dodati parametar funkciji open( ) :

"a" - append - će se dodati podatke na kraj datoteke

"w" - write - će prepisati bilo koji postojeći sadržaj

In [82]:
# Primer 1 
f = open("demodatoteka.txt", "a")
f.write("Ovaj sadržaj smo naknadno dodali u datoteku.")
f.close()

# otvara i čita datoteku nakon dodavanja
f = open("demodatoteka.txt", "r")
print(f.read())
f.close()
Ovo je demo datoteka.
Programiranje je lepo!Ovaj sadržaj smo naknadno dodali u datoteku.
In [83]:
# primer 2 Pisaće preko postojećeg sadržaja
f = open("demodatoteka.txt", "w")
f.write("Ovaj sadržaj će biti prepisan preko postojećeg u datoteci demodatoteka.txt!")
f.close()

# otvara i čita datoteku nakon dodavanja
f = open("demodatoteka.txt", "r")
print(f.read())
Ovaj sadržaj će biti prepisan preko postojećeg u datoteci demodatoteka.txt!

Kreiranje nove datoteke

Da biste kreirali novu datoteku u Python-u, koristite open( ) metod, sa jednim od sledećih parametara:

"x" - create - kreiraće datoteku, vraća grešku ako datoteka postoji

"a" - append - kreiraće datoteku ako navedena datoteka ne postoji

"w" - write - kreiraće datoteku ako navedena datoteka ne postoji

In [84]:
# Kreira novu praznu datoteku
f=open("nova_datoteka.txt","x") 
In [85]:
# Kreira novu datoteku ako ne postoji
f = open("myfile.txt", "w")

Brisanje datoteke

Da biste izbrisali datoteku, morate uvesti OS modul i pokrenuti njegovu os.remove( ) funkciju:

In [86]:
import os
os.remove("myfile.txt")
In [87]:
# Da biste izbegli grešku,
# proverite da li datoteka postoji pre nego što pokušate da je izbrišete.

import os
if os.path.exists("demofile.txt"):
  os.remove("demofile.txt")
else:
  print("Tražena datoteka ne postoji.")
Tražena datoteka ne postoji.