Category Archives: Python

Python

Python sesti cas

Na ovom casu ce biti reci o int i float funkcijama.

Uz pomoc int i float, mozete konvertovati broj, napisan u string formi u “pravi” broj ili konvertovati jedan tip brojeva u drugi.
Int pretvara string ili broj sa decimalom u broj bez decimale.
Float pretvara string ili broj bez decimale u broj sa decimalom.
Ovo sada malo deluje konfuzno, ali cu ubrzo pojasniti u konkretnim primerima.

Primer 1:

U ovom primeru se sabiraju dva broja koja korisnik treba da ukuca.
Uz pomoc funkcije input, korisnik ukucava prvi broj, a zatim i drugi broj koji se kasnije sabiraju.
Posto funkcija input prima string kao ulaz, tako ce tip varijable biti string u datoj varijabi.
Za sabiranje dva broja, nama je potreban nacin da se taj string podatak konvertuje u neki brojcani tip podatka.
To se radi uz pomoc funkcija int ili float.

U ovom primeru koristim int za konverziju. Da ponovim, int koristite za brojeve bez decimala. Ako kojim slucajem ukucate decimalni broj, ili neki slovni karakter, bice prijavljena greska.

#! /usr/bin/python3

a = input ("Upisi prvi broj i pritisni enter... ")
b = input ("Upisi drugi broj i pritisni enter... ")

a = int(a)
b = int(b)

print ("Zbir dva broja je:", a+b)

Primer 2:

U ovom primeru koristim float za konverziju. Da ponovim, float koristite za decimalne brojeve. Ako ukucate broj bez decimale, broj automatski dobija decimalu, na primer ako ukucate 33, broj ce biti u obliku 33.0. Ako ukucate neki slovni karakter, bice prijavljena greska.

#! /usr/bin/python3

a = input ("Upisi prvi broj i pritisni enter... ")
b = input ("Upisi drugi broj i pritisni enter... ")

a = float(a)
b = float(b)

print ("Zbir dva broja je:", a+b)

Primer 3:

Konverzija int u float. Prilikom konverzije int u float, broj bez decimale, automatski dobija decimalu u ovom primeru 1337 ce biti 1337.0.

#! /usr/bin/python3

a = 1337
b = float(a)

print ("Int =", a)
print ("Float =", b)

Primer 4:

Konverzija float u int. Prilikom konverzije float u int, decimala se izbacuje i broj ce biti prikazan bez decimale. U ovom primeru broj 1337.33 ce biti 1337.

#! /usr/bin/python3

a = 1337.33
b = int(a)

print ("Float =", a)
print ("Int =", b)
Advertisements

Verzije Pythona

O ovoj temi smo vec pisali u vise navrata. Obzirom da je i dalje aktuelna, posveticemo joj poseban text.

Najpre razlike izmedju v2 i v3 su minorne. Medjutim ipak su dovoljne da code iz jedne verzije nece kao takav raditi u drugoj. Ovde cemo navesti kljucne razlike:

1) Print je od komande postala funkcija.

Na ovo je bilo najvise prituzbi. U pitanju je stil zapravo. Komanda je vise u basic / pascal stilu, dok funkcija podseca na c++/java itd. U praksi medjutim to jednostavno znaci da cete umesto print x pisati print(x) tipa: print 10 -> print(10) ili print ‘blah’ -> print(‘blah’) i slicno.

Da bi ste imali novu funkcionalnost komande print u v2, mozete koristiti future modul. Jednostavno dodajte na pocetku:

from future import print function

2) Deljenje je postalo intuitivnije.

U v2 u koliko ste integer delili sa drugim integerom, rezulat je takodje bio int tako sto je broj bio zaokruzen. U v3 dobijate precizan rezultat. Npr. v2: 3/4 daje 0 dok v3: 3/4 daje 0.75. U koliko u Pythonu v3 zelite da sacuvate tip inputa, tj da vam ostane integer (kao u v2), koristite //. U prethodnom primeru v3: 3//4 daje 0.

Kao i u slucaju printa, ovu funkcionalnost je u v2 moguce uvesti iz buducnost:

from future import division

Ovo su dve najbitnije razlike izmedju dve verzije. Ima jos nekoliko sa kojima se mozete sresti..

3) Ostale razlike:

a) Funkcija raw_input je postala deo input().
b) Ukinuta je komanda file u koristi funkcije open().
c) Funkcija xrange() je postala range().

I to bi bilo to. Najbitnije su prve dve promene dok su pod tri detalji. Preciznije objasnjenje sa primerima mozete skinuti sa sajta Carleton Koledza, katedra za Kompjuterske Nauke ovde.

E sad, zasto ljudi ostaju pri v2. Postoji vise razloga, od kojih su sledeci najcesci:

a) Podrska – validan razlog. Kao stariji v2 ima siru podrsku u smislu libova i pomocnih projekata. Medjutim velika vecina je vec upgradovana na v3, a oni koji nisu to planiraju da urade u najkracem roku.

b) Navika – jos jedan validan razlog. U koliko vam sve radi stabilno i zadovoljava u potpunosti vase potrebe, zasto bi prelazili na novu verziju. Pa stvar je cene i profita. Ulozeni napor je relativno mali, dok ce vam code biti podrzan u jako dugom periodu.

c) Uticaj – Pojedine velike kompanije koriste v2. Dobar primer za ovo je Google, koji koristi v2 za svoje potrebe. Medjutim treba imati u vidu da oni imaju svoje interne razloge za ovo, te da nikad nisu pokusali da uticu na odluke drugih u ovom smislu. Uz veliko postovanje za doprinos Googla IT svetu, razvoj programskih jezika ne bi trebalo da zavisi od prakse jedne kompanije.

d) Prethodni rad – Veliki broj postojecih kurseva i knjiga koristi v2. Vecina ipak planira prelazak u najkracem roku, a svi novi ionako koriste v3. Ovo je obiman posao, te je kasnjenje razumljivo.

Takodje bih se osvrnuo na nesto sto je vec pomenuto. U Winu je kao i u Nixima moguce koristiti vise verzija uporedo. Ovo je uobicajena praksa za programere kojima je potreban paralelni rad. Nakon instalacije u Start meniju ce biti kreirani odvojeni shortcuti a u sistemskom folderu odgovarajuci dll fajlovi. Kada zelite da radite, jednostavno iz Start menija pokrenite odgovarajucu verziju.

Na kraju, preporuka. U koliko sada pocinjete sa Pythonom, najbolje da koristite v3. Ovim cete steci navike koje ce omoguciti da vas code bude podrzan dugi niz godina. U koliko vec programirate u v2, pogledajte odnos cene i koristi. Za relativno mali korak mozete imati solidan benefit. Ne samo u dugoj podrsci za vase programe vec i u buducim dodacima, jer su novi prirodno orijentisani ka v3.

Kao i uvek, izbor je na vama.

Python peti cas

Uz pomoc funkcije input mozete ubaciti neke podatke i koristiti ih u Vasim programima.

Primer 1:

#! /usr/bin/python3

aa = input ("Upisi neki tekst i pritisni enter... ")
print ("Upisao si:", aa)

Python: Funkcije kao varijable

Vezano za casove 3 & 4 mali dodatak. U Pythonu se funkcije tretiraju kao varijable. Za razliku od ostalih programskih jezika, one nisu rezervisane. U koliko dodelite vrednost komandi na ovaj nacin ona ce izgubiti funkcionalnost. Da bi ste je vratili mozete ili da resetujete Python, ili da je ucitate iz builtins liba.

Radi ilustracije probajte sledece u IDLE:

>>> print(10)
10
>>> print = 10
>>> print
10
>>> print(print)
TypeError: int object is not callable
>>> print(10)
TypeError: int object is not callable
>>> import builtins
>>> print = builtins.print
>>> print(10)
10

Da bi smo bili sigurni, prijavili smo ovo cudno ponasanje kao bug u trackeru i dobili sledeci odgovor:

http://bugs.python.org/issue20263

U pitanju je osobenost Pythona, a ne bug. Takodje, korisno je znati kako obnoviti funkcionalnost u koliko se nadjete u takvoj situaciji.

Python cetvrti cas

U ovom tekstu cu pisati o varijablama, odnosno, u prevodu promenljivim.
Naravno i ovaj tekst ce biti propracen jednostavnim primerima namenjenim pocetnicima.

Sta su varijable (promenljive) i cemu sluze?

Varijable cuvaju odredjenu informaciju u memoriji kompjutera.
To znaci, da kada se definise neka varijabla, tada se rezervise odredjena kolicina memorijskog prostora u memoriji kompjutera.

Svaka varijabla ima svoje ime, koje moze biti duzine jednog ili vise karaktera. Samo da napomenem, da za imena varijabli ne koristite reci koje su rezervisane za Python komande i funkcije i da ne stavljate prazna mesta u nazive varijabli.
Varijable mogu biti brojevi, decimalni brojevi ili karakteri.

U Pythonu, za razliku od nekih drugih programskih jezika, varijable ne moraju biti eksplicitno definisane. To se radi automatski, kada se definise varijabla.

Definisanje varijable se radi uz pomoc znaka jednakosti =
Sa leve strane znaka jednakosti se nalazi ime varijable, a sa desne strane znaka jednakosti se nalazi vrednost koja se smesta u varijablu.

Primer 1:

Definisanje i prikaz varijabli.

#! /usr/bin/python3

# definisanje varijabli

# definisanje brojeva
a = 1337
broj = 33

# definisanje decimalnog broja
z55 = 1337.985

# definisanje stringa
ime = "Pera"

# prikaz sadrzaja varijabli uz pomoc print
print (a)
print (broj)
print (z55)
print (ime)

Primer 2:

Sa varijablama mozete raditi razne stvari, u ovom primeru sabiram vrednost dve varijable.

#! /usr/bin/python3

a = 55
b = 33

print (a+b)

Primer 3:

Takodje, mozete spojiti i dva stringa, kao u ovom primeru.

#! /usr/bin/python3

rec1 = "Ja sam "
rec2 = "Python!"

print (rec1+rec2)

Python treci cas

U ovom tekstu cu malo detaljnije da obradim print u nekoliko primera.

Primer 1:

Print u vise redova, odnosno u bloku.

#! /usr/bin/python3

print (
"""
Ovo je primer
kada se print koristi
za prikaz vise redova,
odnosno prikaz u bloku.
"""
)

Primer 2:

Primer sa apostrofima umesto navodnika:

#! /usr/bin/python3

print ('Primer sa apostrofima umesto navodnika.')

Primer 3:

Ako zelite da ubacite navodnike u tekst to mozete uraditi ovako:

#! /usr/bin/python3

print ('Ako zelite da ubacite "navodnike u tekst" to mozete uraditi ovako.')

Primer 4:

Kada su izmedju navodnika i brojevi se tretiraju kao string, odnosno tekst:

#! /usr/bin/python3

print ("Kada su izmedju navodnika i brojevi se tretiraju kao string, odnosno tekst... 1,2,3,4...")

Primer 5:

U dosadasnjim primerima sam print koristio samo za prikaz string podataka. U ovom primeru cu prikazati kako se print koristi sa brojevima:

#! /usr/bin/python3

print (25)

Kao sto vidite, za prikaz brojeva ne koristite navodnike i apostrofe.

Primer 6:

U ovom primeru cu Vam pokazati kako da saberete dva broja:

#! /usr/bin/python3

print (2+2)

Vrlo prosto 2+2=4 :)

Slicno je za ostale osnovne matematicke operacije.

+ sabiranje
- oduzimanje
* mnozenje
/ delenje

Za sada toliko o matematici, detaljnije cu se pozabaviti matematikom u narednim tekstovima. :)

Python drugi cas

U ovom tekstu cu da obradim escape karakter \n.

Primer 1:

\n je takozvani escape karakter, koji u sustini predstavlja prelazak u novi red. U ovom primeru sam upisao dva puta \n da bih prvo ubacio dva prazna reda, a zatim se ispise tekst.

#! /usr/bin/python3

print ("\n\nZdravo ja sam Python!")

Primer 2:

\n mozete ubacivati gde god zelite u stringu i koliko god puta hocete.

#! /usr/bin/python3

print ("Z\nd\nr\na\nv\no\n \nj\na\n \ns\na\nm\n \nP\ny\nt\nh\no\nn\n!")

Python prvi cas

U ovom tekstu cu da obradim print, interaktivni rezim interpretera i komentare.

Primer 1:

Pokrenite tekst editor i upisite programski kod koji se nalazi izmedju linija, sacuvajte fajl pod nekim imenom, na primer neka se zove: primer1.py

#! /usr/bin/python3

print ("Zdravo, ja sam Python!")

U prvom redu je komentar:
#! /usr/bin/python3
To znaci da je skripta namenjena Pythonu 3.

U sledecem redu se nalazi:
print ("Zdravo, ja sam Python!")
Print sluzi da se prikaze neki sadrzaj na ekranu, u ovom primeru: Zdravo, ja sam Python!
Iza print ide otvorena zagrada (, a na kraju ide zatvorena zagrada ).
Izmedju zagrada se nalazi sadrzaj koji treba da se prikaze na ekranu.
Ako su u pitanju karakteri koji se tretiraju kao string, a ne kao brojevi, onda se postavljaju navodnici i ti karakteri idu izmedju navodnika kao u prvom primeru.
Samo da pojasnim da ne bude zabune, string karakteri mogu biti i brojevi, a ne samo slova i znakovi interpunkcije, ali se ti brojevi tretiraju kao string, odnosno tekst.

Ovo je samo za Linux korisnike:
Pokrenite terminal, udjite u folder gde ste sacuvali fajl i ukucajte:
chmod +x primer1.py
da bi ste dodelili dozvolu za izvrsavanje fajla.
Zatim pokrenite fajl tako sto ukucate: ./primer1.py

U Windowsu ne morate da dodeljujete dozvolu za izvrsenje fajla. Pokrenite komandni prompt, udjite u folder gde ste sacuvali fajl i kucajte: primer1.py

Ako ste sve dobro uradili, na ekranu bi trebalo da pise:
Zdravo, ja sam Python!

Primer 2:

U ovom primeru cu Vam objasniti rad u takozvanom interaktivnom rezimu interpretera.
Pokrenite program Idle (graficka verzija za Windows i Linux) ili iz terminala kucajte python3 da bi ste radili u terminalu (Linux).

Zatim kucajte:
print ("Zdravo, ja sam Python!")
pritisnite enter.

Ako ste sve obro uradili, trebalo bi da se pojavi tekst:
Zdravo, ja sam Python!

Eto, to je interaktivni rezim. Kucate liniju po liniju i odmah dobijate rezultat. Naravno, mozete to malo i zakomplikovati varijablama i matematickim operacijama, ali za pocetak, ovo je sasvim dovoljno. Tu mozete eksperimetnisati sa komandama i funkcijama. I odmah videti rezultat i proveriti da li Vam je dobra sintaksa, odnosno da nemate gresaka. :)

Primer 3:

U ovom primeru cu pisati o komentarima.

#! /usr/bin/python3

# Ovo je primer komentara u jednoj liniji.
# Naravno, mozete postaviti jos jedan komentar u drugoj liniji.
# I u tecoj itd...

print ("Zdravo, ja sam Python!")

Kao sto vidite u ovom primeru, iza # se postavljaju komentari. Ti komentari se ignorisu prilikom izvrsavanja programa. Tako da mozete pisati sta god pozelite. Korisno je pisati komentare vezane za sam kod, na primer da napisete cemu sluzi sledeca komanda ili sledeci blok komandi, odnosno funkcija.

Primer 4:

Takodje, mozete pisati i takozvane blok komentare, odnosno komentare u vise redova. Blok komentari se nalaze izmedju tri znaka navodnika """, kao u primeru:

#! /usr/bin/python3

"""
Ovo je primer
komentara u vise redova,
odnosno blok komentara.
"""

print ("Zdravo, ja sam Python!")

Primer 5:

Jos jedna izuzetno korisna primena komentara je da, ako niste sigurni da li zelite da zadrzite ili da izbacite neku programsku liniju, mozete postaviti znak # ispred te linije i na taj nacin onemoguciti izvrsenje te linije. Jer ce se tada ta programska linija tretirati kao komentar i nece biti izvrsena. To je mnogo korisnije, nego da je potpuno izbrisete, jer se kasnije mozda mozete predomisliti i da je vratite. Takodje je to korisno i kada probate vise varijanti programskih linija, koje rade slicnu stvar i na taj nacin lako iskljuciti ili ukljuciti izvrsenje te programske linije.

Evo i primera:

#! /usr/bin/python3

#print ("Zdravo, ja sam Python!")
#print ("Cao, ja sam Python!")
print ("Ja sam Python!")

—————————

Python – uvod u seriju tekstova sa primerima.

Windu je vec napisao dobar uvod za Python, mozete ga procitati ovde: https://kompjuteri2011.wordpress.com/2013/07/28/osnove-pitona/

Ja cu zapoceti seriju tekstova sa primerima u Pythonu.
Odmah da napomenem, da nisam neki ekspert za Python, jos uvek ga ucim, kad imam vremena i volje. :)
Tako da ce primeri biti namenjeni totalnim pocetnicima.

Python programe, odnosno skripte, kako to neki nazivaju, mozete pisati u bilo kom tekst editoru.
Ako koristite Windows, mozete koristiti Notepad, koji se dobija uz Windows, Notepad++ ili neki drugi slican editor. Ako koristite Linux, onda mozete koristiti Gedit, Nano, Vim, Leaf pad ili sta god Vam vec odgovara.
Takodje, mozete koristiti i neke IDE alate, kao na primer Boa Constructor.

Posto koristim Linux (Ubuntu 12.04 LTS), tekstovi ce biti pisani iz perspektive Linux korisnika. Ali i korisnici ostalih operativnih sistema mogu da citaju tekstove, jer je sam kod skoro isti za sve operativne sisteme, barem za primere koje cu ja koristiti. Razlike u kodu su minimalne i odnose se na neke sistemske naredbe i mozda na neke naredbe vezane za grafiku i graficki korisnicki interfejs (GUI).

Za razliku od Windowsa, u Linuxu se mora dodeliti dozvola da se Python fajl izvrsava.
To se radi u terminalu komandom:
chmod +x ime_fajla.py
ili klikom desnog tastera na misu na ikonu tog fajla, zatim na Properties, pa na Permissions i tu stiklirati opciju Allow executing file as program. Pretpostavljam da sve ovo vec znate, ali za svaki slucaj sam napomenuo. :)

Ne znam za ostale operativne sisteme, ali u Linuxu mogu da koegzistiraju obe verzije, odnosno grane Pythona i 2.x i 3.x.
Tako da je korisno u prvom redu programa, odnosno skripte staviti komentar:
#! /usr/bin/python
ako je program za Python 2.x
ili
#! /usr/bin/python3
za Python 3.x, da bi se skripta pokrenula u odgovarajucoj verziji interaptera.

Jos jedna stvar vezana za koegzistiranje obe verzije Pythona je da, kada pokrecete Python interpreter u takozvanom interaktivnom rezimu, iz terminala, Python 2.x pokrecete komandom python, a Python 3 pokrecete komandom python3.

Eto, toliko za ovaj uvodni tekst. U narednim tekstovima ce biti konkretnih primera programa za Python.

Osnove Pitona

Pajton programski jezik uziva sve vecu popularnost kako u obrazovanju tako i u poslu. Dok je u nekim krugovima ubedljivo na prvom mestu, gotovo uvek je pri vrhu. Razloga za ovo ima mnogo: jednostavnost, preglednost, cena (besplatan), otvorena licenca, platformska nezavisnost, univerzalna primena, jaka podrska itd.

U koliko zelite da naucite Python, ovde cemo dati nekoliko proverenih i kvalitetnih predloga:

1) LearnStreet – Zanimljivo uradjen uvod u Python. U pitanju je interaktivna skola, koja vas vodi kroz koriscenje interpretera i pisanje jednostavnog koda. Obradjuje segmente programskog jezika kroz niz vezbi i zadataka, uz hintove i pomoc u koliko je neophodno. Inace, LearnStreet ima slicnu skolu Rubya i JavaScripta.

2) Udacity CS101 – Kurs koji je proslavio Udacity. Iako je zvanicno vezan za Kompjuterske Nauke, u potpunosti je baziran na Pythonu. Predavanja su interaktivna, sadrze brojne vezbe kao i finalni test u dva dela nakon koga, u zavisnosti od rezultata, dobijate pdf sertifikat. Nakon toga slede dodatna predavanja koja konsoliduju znanje i ukazuju na elegantnija programerska resenja.

3) Google Python – Odlicna dopuna za prethodna dva, a mozda i dobro mesto da se pocne. U pitanju je kratak kurs Pythona koji podrazumeva da imate makar neku osnovu u programiranju. Sadrzi jednostavne ali vrlo ilustrativne prakticne primere rasporedjene po oblastima, video materijale sa originalnih predavanja kao i kodove sa vezbama.

Napomena: Za prva dva nije potrebno da instalirate bilo sta, jer obe platforme imaju svoj web interpreter. Treci je baziran na radu u desktop interpreteru, i daje instrukcije kako da ga instalirate na razlicite sisteme. Moje misljenje je da ga svakako instalirate, jer je nelogicno i neprakticno uciti programski jezik bez istog na sopstvenom sistemu.

Napomena+: Sva tri kursa su bazirana na Pythonu v2. Treci kurs medjutim daje brojne reference ka Pythonu v3, na sebi svojstven Google freestyle nacin. To je inace i pristup celog kursa.

FaQ:

1) Sta instalirati? Instalirajte zeljenu verziju Pythona za vas sistem odavde.

2) Web interpreteri? Zgodan nacin da testirate svoj code preko web interfejsa. Neki od najboljih su repl.it & codecademy.

3) Koja verzija? Ljudi cesto pitaju da li da instaliraju v2 ili v3. Oba resenja su dobra i ovo je pomalo vestacki sukob. Pv2 je jednostavniji i popularniji. Pv3 je odavno stabilan i predstavlja buducnost. Razlike su minimalne, i ako se pokaze neophodnim mozete koristiti prevodilac 2to3 ili backport 3to2. Takodje, nista vas ne sprecava da instalirate obe jer mogu da rade paralelno.

4) Piton vs. Pajton (izgovor imena)? Jos jedan vestacki sukob, oba izgovora su validna. Programski jezik je dobio ime po Letecem Cirkusu Monti Pajtona. U koliko shvatite na ovaj nacin pravilno je Pajton, u koliko shvatite kao ime vrste zmije onda je Piton.

5) Sta dalje? U koliko vam se dopadne Pajton i zelite da naucite vise, najbolje da sledite svoja prirodna interesovanja. Npr. ako vas zanima desktop potrazite BoaConstructor i slicne alate. Za security aspekt, Python ima bogate mogucnosti enkripcije svake vrste kao i odlicne knjige na temu, poput Violent Python. Ako volite da pravite igre, tu je InventWithPython.com. I konacno, ako zelite da predjete na Pv3, u najavi su dva odlicna kursa Univerziteta u Torontu: The Fundamentals & Crafting Quality Code.

Na kraju, ako vam zatreba pomoc ili savet, gotovo sigurno cete naci resenje na StackOverflow.com –  svakako jednom od najkorisnijih sajtova na temu.

Uzivajte u Pythonu. :)

%d bloggers like this: