Preporučena razvojna okolina je Linux s Pythonom 3. Međutim, može poslužiti i bilo koji operacijski sustav s Pythonom.
Python službene stranice: https://www.python.org/
Anaconda: (python sa skoro svim paketima): https://www.continuum.io/downloads
Na Linuxu se najčešće instalira kao paket (ne skidati s gornjih linkova).
U datotekama (s primjerima) se kao zaglavlje (prve dvije linije) pojavljuju dvije linije:
#!/usr/bin/python # -*- coding: UTF-8 -*-Iako sve što slijedi iza
#
za Python je komentar, on će ipak pogledati
te linije te koristiti UTF-8 način kodiranja. Prva linija je za opis
kojim programom to pokrenuti (ako to ne radimo ručno iz komandne linije).
Primjeri kroz interaktivni rad s Pythonom
(Python je pokrenut u naredbenoj liniji: prefiks (prompt) koji on stavlja
je >>>
. Ako se želi to reproducirati kopirati bez prefiksa.)
# brojevi >>> a = 5 >>> b = 5.5 >>> c = -5.5e10 >>> d = -5.5e-10 >>> e = a + b + c + d >>> e -54999999989.5 # stringovi >>> f = 'Jedan' >>> len(f) # duljina stringa => broj znakova (oprez s našim znakovima u 2.) 5 >>> g = 'Dva' >>> h = f+g >>> h 'JedanDva' >>> h[0] 'J' >>> h[0:5] 'Jedan' >>> h[5:] 'Dva' >>> h[5]='X' Traceback (most recent call last): File '<stdin>', line 1, in <module> TypeError: 'str' object does not support item assignment # stringovi se ne mogu ovako mijenjati, ali mogu napraviti novi: >>> h = h[0:4] + 'X' + h[5:] >>> h 'JedaXDva' # liste >>> i = [] # prazna lista >>> j = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ] # lista od 10 elemenata >>> j[0:5] [0, 1, 2, 3, 4] >>> j[5:10] [5, 6, 7, 8, 9] >>> j[5:] [5, 6, 7, 8, 9] >>> j[2:3] + j[6:8] [2, 6, 7] >>> j[5] = 100 # elemente liste moguće je mijenjati >>> j [0, 1, 2, 3, 4, 100, 6, 7, 8, 9] # elementi liste mogu biti razni objekti >>> k = [ 0, '1', 2, [ 'tri', 4 ], 'pet' ] >>> k[3][0] 'tri' >>> k[3][1] 4
>>>
).
Naredba/funkcija: print ( varijabla )
pripremiti će varijablu za ispis (pretvoriti ju u niz znakova) te ispisati.
Primjeri:
>>> print (1) 1 >>> print ('Jedan') Jedan >>> print (f) Jedan >>> print(f,g) ('Jedan', 'Dva') # vrijedi za Python2; za Python3 ispis je: Jedan Dva >>> print(f+g) JedanDva >>> print(j) # j od prije [0, 1, 2, 3, 4, 100, 6, 7, 8, 9] >>> print (a) 5 >>> print ( "a =", a ) a = 5 >>> print ( "a =", a, "!" ) a = 5 ! >>> print ( "a = " + str(a) ) # operator "str" pretvara argument u string a = 5 # u nastavku se koristi zadnji način (+str()) jer je ispis isti u Python2/3Uobičajeno će
print
uključivati i prelazak u novi red.
Ako to nije željeno ponašanje, u Pythonu 3 se to može spriječiti dodavanjem
argumenta end=""
na kraj. Npr. u programu može biti:
print ( "1", end="") print ( "2", end="") print ( "3", end="") print ( "4" )što će rezultirati ispisom:
1234i tek tada prelazak u novi red.
input
. Povratna vrijednost je string - niz znakova učitanih s tipkovnice do pritiska znaka ENTER.
>>> a = input("Unesi nešto: ") Unesi nešto: 55 je broj s dvije petice >>> a '55 je broj s dvije petice' >>>Ukoliko je potrebno znakove pretvoriti u broj koristiti funkciju
int
ili float
.
>>> a = int(input("Unesi broj: ")) Unesi broj: 61 >>> a 61Više brojeva u istom retku je najprije potrebno odvojiti a potom pretvoriti u brojeve.
>>> a = input("Unesi brojeve: ") Unesi brojeve: 4 9 88 1 >>> a '4 9 88 1' >>> a = a.split(" ") # podijeli na podnizove omeđene razmakom >>> a ['4', '9', '88', '1'] >>> a = [int(x) for x in a] >>> a [4, 9, 88, 1]Kompaktno:
>>> a = [int(x) for x in input("Unesi brojeve: ").split(" ")] Unesi brojeve: 4 9 88 1 >>> a [4, 9, 88, 1] >>>
if/else/elif
)Primjeri (if.py):
# inicijalizacija varijabli (od prije) a = 5 b = 5.5 c = -5.5e10 d = -5.5e-10 if a > b: print ( "Od " + str(a) + " i " + str(b) + " veći je " + str(a) ) else: print ( "Od " + str(a) + " i " + str(b) + " veći je " + str(b) ) print('--------------------------------------------------------------') if a > b: print ( "Od " + str(a) + " i " + str(b) + " veći je " + str(a) ) elif b > a: print ( "Od " + str(a) + " i " + str(b) + " veći je " + str(b) ) else: print ( "Varijable a i b su jednake i iznose " + str(a) ) print('--------------------------------------------------------------') najveci = a # Python3 dozvoljava i naše grafeme u imenima varijabli! # pa bi u njemu mogli pisati i najveći # ali radi prenosivosti se to ne preporuča if b > najveci: najveci = b if c > najveci: najveci = c if d > najveci: najveci = d print ( 'Najveći broj je: ' + str(najveci) ) print('--------------------------------------------------------------') # logički operatori: or, and, not, not in if a > b and a > c: # a je najveći napravi nešto pass # ne radi ništa - to se može staviti i privremeno if ( a > b and a > c ) or ( a == 42 ): # koristi a pass print('--------------------------------------------------------------') prazno = [] # prazna lista if prazno: print ( "prazno nije prazno!") if not prazno: print ( "prazno je prazno!") print('--------------------------------------------------------------') lista = [ 'a', 'b', 'c', 1, 2, 3 ] if 'a' in lista: print ( "imam 'a'") if 'x' not in lista: print ( "nemam 'x'") a = 2 if a in lista: print ( "imam " + str(a) )
for
, while
)Primjeri (for.py):
### for for i in range(5): print(i) # 0 1 2 3 4 (svaki u svom redu) print('--------------------------------------------------------------') for i in range(1,5): print(i) # 1 2 3 4 (svaki u svom redu) print('--------------------------------------------------------------') lista = [ 0, 1, 2, 3, 4, 5 ] for i in lista: print(i) # 0 1 2 3 4 5 (svaki u svom redu) print('--------------------------------------------------------------') # isto, ali na drugačiji način for i in range(len(lista)): # len - broj elemenata u listi print(lista[i]) print('--------------------------------------------------------------') for i in lista[2:5]: print(i) # 2 3 4 (svaki u svom redu) print('--------------------------------------------------------------') for i in lista[0:2] + ['a', 'b', 'c']: print(i) # 0 1 2 a b c (svaki u svom redu) print('--------------------------------------------------------------') ### while a = 1 b = 10 while a < b: a = a + a print (a) # 2 4 8 16 print('--------------------------------------------------------------') a = 1 b = 10 while a < b: a = a + a if a < b: print (a) # 2 4 8 print('--------------------------------------------------------------') for i in range(5): for j in range(5): if i < j: continue # nastavlja s prvom bližom petljom if i == j: print ( i ) break # prekida prvu bližu petlju print ( j, end="" )
python program.py Pero 1234 53-43
kako u programu doći do argumenata iz komandne linije? Preko sys.argv
!
Primjeri (arg.py):
import sys # učitaj modul sys for arg in sys.argv: print (arg) print('--------------------------------------------------------------') # uz pretpostavku pokretanja: python3 arg.py Pero 1234 53-43 if len(sys.argv) > 2: a = sys.argv[2] b = int(a) # b je sada broj print ( "a:" + str(a) + " - tip: " + str(type(a)) ) print ( "b:" + str(b) + " - tip: " + str(type(b)) ) print('--------------------------------------------------------------') # učitavanje samo dijela modula from sys import argv # iz modula sys učitaj samo argv for arg in argv: print (arg)Lista
sys.argv
sadrži argumente, počevši s imenom datoteke s izvornim kodom
sys.argv[0]
(arg.py), preko prvog argumenta sys.argv[1]
(Pero) itd.
Argumenti su stringovi. Ako je potrebno koristiti funkcije za pretvorbu
u druge tipove podataka (npr. int()
) kao u primjeru.
def
)Primjeri (funkcije.py):
def funkcija(a,b,c): print ("Argumenti: " + str(a) + ", " + str(b) + ", " + str(c)) # poziv funkcija ( 1, 2, 'tri' ) print('--------------------------------------------------------------') # vraćanje vrijednosti def povecaj (x): x = x + 1 return x a = 5 print ( a ) # 5 b = povecaj(a) print ( b ) # 6 print('--------------------------------------------------------------') # promjena globalne varijable: krivo a = 5 b = 0 def povecaj (): b = a + 1 # stvoriti će se nova "lokalna varijabla" b print ( a ) # 5 povecaj() print ( b ) # 0 !!! print('--------------------------------------------------------------') # promjena globalne varijable: ispravno a = 5 b = 0 def povecaj (): global b b = a + 1 print ( a ) # 5 povecaj() print ( b ) # 6 print('--------------------------------------------------------------') # složenije globalne varijable koje se samo dijelom mijenjaju su OK a = [ 0, 1, 2, 3, 4 ] def povecaj (): for i in range(len(a)): a[i] += 1 print ( a ) # [0, 1, 2, 3, 4] povecaj() print ( a ) # [1, 2, 3, 4, 5]
Npr. python3 vis2.py
2 4 8 16 32 64 128 256 512
(ispis može biti u retcima, svaki broj u svom retku)
Npr. python3 brojevi.py 3 7 2 4 -8 1
najmanji: -8
najveci: 7
a
, neparne u b
te ih
ispisati (print(a)
, print(b)
).
Napomene:
- dijeljenje: realno: 7 / 3 = 2,5
cjelobrojno: 7 // 3 = 2
- modul: 7 % 3 = 1, 4 % 2 = 0
- binarni &: 7 & 1 = 1, 4 & 1 = 0
Npr. python3 parni.py 3 7 2 4 -8 1
neparni:
[3, 7, 1]
parni:
[2, 4, -8]