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/3
Uobič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
61
Viš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]