Blog Archives
Python http server u jednoj liniji u terminalu
Kao sto naslov kaze, uz pomoc Pythona, iz terminala mozete podici web, odnosno http server u samo jedno komandnoj liniji, bez potrebe za instaliranjem Appache web servera i slicnih komplikacija. Idealno, ako na brzinu zelite da podignete server da probate nesto ili da delite fajlove preko lokalne mreze.
Server ce biti podignut na portu 8000, ako zelite na portu 80 ili nekom drugom portu ispod 1024, treba da kucate sudo ispred komande.
Pokretanje servera sa sudo privilegijama nikako ne preporucujem.
U narednim primerima ce biti podignut http server. Dostupni fajlovi ce biti u trenutno aktivnom direktorijumu.
Za potrebe testiranja, napravite direktorium i udjite u taj direktorijum, u terminalu kucajte:
mkdir brzihttpserver
cd brzihttpserver
Radi potrebe testiranja iskopirajte fajlove u taj direktorijum. Ti fajlovi ce biti vidljivi u web pregledacu.
Ako se u direktorijumu nalazi fajl index.html
, taj fajl ce biti automataski otvoren u web pregledacu.
Pokrenite terminal i kucajte sledece:
Primeri za Python 2.x:
Pokrece server na portu 8000:
python -m SimpleHTTPServer
Sada u web pregledacu, u polje za adresu kucajte: 127.0.0.1:8000
ili ip_adresa_servera:8000 ako se server nalazi na drugom umrezenom kompjuteru.
Pokrece server na portu 80:
sudo python -m SimpleHTTPServer 80
Ovde je dovoljno kucati 127.0.0.1 ili ip adresu umrezenog kompjutera, ako se server nalazi na drugom kompjuteru.
Primeri za Python 3.x:
Pokrece server na portu 8000:
python3 -m http.server
Sada u web pregledacu, u polje za adresu kucajte: 127.0.0.1:8000
ili ip_adresa_servera:8000 ako se server nalazi na drugom umrezenom kompjuteru.
Pokrece server na portu 80:
sudo python3 -m http.server 80
Ovde je dovoljno kucati 127.0.0.1 ili ip adresu umrezenog kompjutera, ako se server nalazi na drugom kompjuteru.
Password generator
Password generator je program napisan u Pythonu 3.4.0. Sluzi da generise sifre po nekim zadatim kriterijumima. Izdat je pod GNU GPL V3 licencom. Radi iz komandne linije. Kada se program pokrene iz komandne linije, prvo treba zadati broj karaktera za sifru, podrazumevana vrednost je 16, ali se moze promeniti u rasponu od minimalno 4, pa sve do 1024 karaktera. Zatim se odredjuje koji ce karakteri biti ukljuceni u generisanje sifre. To mogu biti Mala slova, velika slova, brojevi i znakovi interpunkcije. Svaku grupu karaktera mozete ukljuciti ili iskljuciti, podrazumevano je da su sve grupe ukljucene, ali mozete pojedine grupe karaktera iskljuciti pritiskom na slovo N na tastaturi, kada se pojavi upitnik za odredjenu grupu karaktera.
Program mozete preuzeti sa linka:
https://dl.dropboxusercontent.com/u/26020865/passwordgeneratorV3.zip
U zip arhivi se nalazi srpska i engleska verzija programa.
Python osmi cas
For
petlja sluzi da se neka komanda ili funkcija, odnosno blok komandi ili funkcija izvrsi odredjeni broj puta.
Primer 1:
U ovom primeru se koristi range
, koji ima format range(start,kraj,korak)
. Korak se ne mora uvek koristiti. Ako se izostavi, podrazumevana vrednost je 1, ako se stavi neki broj, na primer 2, bio bi na primer ispisan svaki drugi broj. O tome kasnije.
Obratite paznju da blok komandi i funkcija koje su obuhvacene for petljom mora biti uvucen. Kada se petlja zavrsi posle odredjenog broja puta, nastavlja se izvrsavanje programa.
#! /usr/bin/python3 for n in range(1,11): print (n) print (\nOvo je bio primer for petlje.")
Primer 2:
Ovaj primer je slican prethodnom, razlika je, sto je funkciji print
dodat end=" "
, na taj nacin, umesto liste brojeva koji su jedni ispod drugog, brojevi ce biti ispisani jedan pored drugog. Ovo je mozda trebalo da pomenem kada sam pisao o funkciji print, ali dobro, moze i ovde, ovo je dobar primer kada se koristi end=" "
.
#! /usr/bin/python3 for n in range(1,11): print (n, end=" ") print (\nOvo je bio primer for petlje.")
Primer 3:
For se ne mora koristiti samo sa brojevima, vec se moze koristiti i sa karakterima u stringu. U ovom konkretnom primeru, mora se na pocetku definisati varijabla a = 0 i zatim, varijabla a, sluzi kao brojac karaktera jer se za svaki karakter u stringu uvecava za 1 u liniji a = a + 1.
#! /usr/bin/python3 s = "Python" a = 0 for n in s: a = a + 1 print (a,"slovo u stringu je",n) print (\nOvo je bio primer for petlje.")
Primer 4:
Slicno kao i prethodnim primerima, samo ovde mnozim svaki broj u opsegu sa 2.
#! /usr/bin/python3 for n in range(1,5): print (n*2) print (\nOvo je bio primer for petlje.")
primer 5:
U ovom primeru koristim i treci argument u funkciji range. Posto je treci argument, odnosno korak 2, to znaci da ce biti preskocen svaki drugi broj u opsegu.
#! /usr/bin/python3 for n in range(1,11,2): print (n) print (\nOvo je bio primer for petlje.")
Primer 6:
U ovom primeru brojanje ide u nazad.
#! /usr/bin/python3 for n in range(10,0,-1): print(n)
Python sedmi cas
Cesto cete biti u situaciji da kontrolisete tok programa u zavisnosti od nekih uslova. Jedan od nacina da to uradite je uz pomoc komande if
. Uz if
mogu da se koriste elif
i else
, ali nisu obavezni.
Primer 1:
Program trazi da unesete odgovor. Ako je odgovor da, onda se program prekida. Ako nije da, onda se program nastavlja.
#! /usr/bin/python3 zzz = input ("Da li zelis da prekines izvodjenje programa? ") if zzz == "da": exit() print('\nOvo je bio primer kako se koristi "if"')
Primer 2:
Program trazi da se ukuca rezultat zbira 2+2. Ako je odgovor tacan, onda se izvrsava blok komandi ispod if zzz == 4
i zatim program nastavlja dalje izvrsavanje ignorisuci blok komandi ispod elif zzz != 4
.
Obratite paznju na uvucene linije. To je u Pythonu jako vazna stvar.
Neke komande, u ovom primeru if
i elif
imaju blok komandi koje slede ispod i taj blok komandi mora da bude uvucen.
U sustini, prostim jezikom receno, if
i elif
proveravaju da li je uslov ispunjen.
Ako je uslov iza if
, odnosno elif
ispunjen onda se izvrsava taj blok komandi.
Zatim program nastavlja izvodjenje programskih linija koje nisu uvucene.
#! /usr/bin/python3 zzz = input ("Koliko je 2+2? ") zzz = int(zzz) if zzz == 4: print("Tvoj odgovor je tacan!") elif zzz != 4: print("Tvoj odgovor nije tacan!") print("Tacan odgovor je 4.") print('\nOvo je bio primer kako se koristi "if"')
Primer 3:
Ako nijedan od uslova nije ispunjen, onda se izvrsava blok komandi ispod else
.
#! /usr/bin/python3 zzz = input ("Koliko imas godina? ") zzz = int(zzz) if zzz <= 20: print("Ti si bas mlad.") elif zzz <= 50: print("Ti si u najboljim godinama.") else: print("Bas si mator.") print('\nOvo je bio primer kako se koristi "if"')
U ovim primerima ste mogli da zapazite i neke simbole koji se koriste za if
, elif
i else
.
U Pythonu postoji 6 simbola za razlicite uslove.
Manje od ............ < Vise od ............. > Manje ili jednako ... <= Vece ili jednako .... >= Jednako ............. == Razlicito ........... !=
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)
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 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!")
—————————