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.

Advertisements

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!")

—————————

%d bloggers like this: