Sunteți pe pagina 1din 41

INTRODUCERE N LUMEA PYTHON

Introducere Python

GOOGLE
"PYTHON HAS BEEN AN IMPORTANT PART OF
GOOGLE SINCE THE BEGINNING, AND REMAINS SO
AS THE SYSTEM GROWS AND EVOLVES. TODAY
DOZENS OF GOOGLE ENGINEERS USE PYTHON, AND
WE'RE LOOKING FOR MORE PEOPLE WITH SKILLS N
THIS LANGUAGE."
PETER NORVIG, DIRECTOR OF SEARCH QUALITY,
GOOGLE, INC.

Python este un limbaj de programare puternic, dar uor de folosit dezvoltat de Guido
van Rossum, primul lansat peste doua decenii n urm, n 1991. Python faciliteaz o
scriere rapida i poate fi folosit pentru i aplicaii comerciale, fiind cross-platform
(platform independent). Acest lucru permite rularea aceluiai program pe diferite
sisteme de operare. Deci acelai script python poate fi rulat pe sisteme de operare
precum Windows, DOS, Macintosh sau Linux.
Dar de ce am folosi python i nu alt limbaj de programare?
Unul dintre motive este ca Python este uor de folosit. Provocarea unui limbaj de
programare este formata din sintaxa limbajului. Cu cat sintaxa este mai aproape de
codul main, cu att este mai greu de nvat i de a gsi rspunsuri cnd
comportamentul nu este tocmai cel scontat.
Spre exemplu, programarea n limbajul C presupune un efort imens pt. gsirea unei
soluii la un comportament defectuos. Limbaje precum C, C++, C# sau Java sunt
considerate limbaje de nivel nalt, mult mai aproape ca sintaxa de codul main dect
de limbajul uman.
Dar Python are reguli clare i simple fiind foarte aproape de limbajul uman, declaranduse pe buna dreptate ca Python este definit ca programare la viteza gandului.

Python Curriculum

Utilizarea facila a Pythonului creste productivitatea pentru programatorii avansai.


Timpul de scriere a unui program ce va avea acelai comportament n mai multe
limbaje de programare arata de ce pythonul este mult mai preferat dect alte limbaje.
Un program n python se scrie de trei pana la cinci ori mai rapid dect n limbajul Java,
i de cinci pana la zece ori mai scurt fata de limbajul C++. Exista anumite statistici care
lauda limbajul Python afirmnd ca un singur programator Python ar putea face aceeai
munca cat doi programatori n C++.
Cum este i normal, exista domenii n care limbajele de nivel nalt, precum C sau Java
nu pot fi dispensate, cum ar fi programarea embedded, unde viteza i spaiul de stocare
mic limiteaz posibilitatea de a folosi python.
Python este un limbaj foarte puternic i are toate facilitatile ca, la finalul acestui curs, sa
puteti s construiti interfete grafice. Este atat de puternic ca este folosit de cei de la
youtube pentru cautarea filmuletelor n imensa baza de date. Companii precum Google,
Hewlett-Packard, IBM, Industrial Light + Magic, Microsoft, NASA, Red Hat, Verizon,
Xerox i Yahoo! Il folosesc. Activision, Electronic Arts i Infogames au publicat jocuri ce
au incorporate scripturi Python. Acest limbaj a fost integrat n Microsoft Studio, astfel ca
acum n spatele unui program .NET poate sta un script python. Python poate fi integrat
i n alte limbaje precum C, C++ sau Java.
Daca ai cunotine deja n programare probabil ai auzit de object-oriented programming
sau OOP pe scurt. Este un subiect foarte dezbtut, i n general este ce i dorete un
programator n curriculum vitae. OOP este un alt mod de a programa, de a gsi soluii
la rezolvarea problemelor din programare. Presupune o abordare scalabila de a
programa. Nu este singura metoda, dar pentru proiectele mari este cea mai buna
soluie.
Limbajele precum e C#, Java sau Python sunt toate object-oriented. Dar Python are o
mbuntire. n C# i Java, OOP nu este opional. Acest lucru face ca programele
scurte s fie nejustificat de complexe. De asemenea n aceste limbaje de programare o
persoana care dorete s nvee limbajul de programare va primi destul de multe
informaii nainte de a face ceva semnificativ. n schimb Python are o abordare diferita.
n Python utilizarea de tehnici OOP este opional. Ai toata puterea OOP la dispoziie,
dar o poi folosi doar cnd ai nevoie, nencrcnd nejustificat programele mici.
Python are o comunitate bine dezvoltata i asta datorata n special simplitii limbajului
de programare.Exista multe site-uri, bloguri etc.:
Site-ul oficial este : http://www.python.org
Exista i un Google newsgroup :https://groups.google.com/d/forum/comp.lang.python
Python are de asemenea un mailing list numit Python Tutor, un mod mai bun ca
programatorii nceptori s pun ntrebrile care caut un rspuns:
http://mail.python.org/mailman/listinfo/tutor.
Un alt atu Python este ca permite un debug ce include toate fisierele, functiile si clasele
apelate pana la eroarea aparuta.

Python Curriculum

Python este considerat un limbaj interpretabil, spre deosebire de C care este un limbaj
compilabil.
Un limbaj compilabil este un limbaj care trebuie s compileze fiierele sursa n fiiere
care sunt foarte aproape de limbajul main. Din aceasta cauza, C este un limbaj foarte
rapid. Din pcate timpul de compilare este cteodat foarte mare. Spre exemplu pentru
un Router Avaya, compilarea fiierelor sursa ntr-o imagine executabila pentru router
din gama de top, dup o operaiune de comentare a unei linii poate dura i trei ore...

In mod normal limbajele interpretate sunt de cele mai multe ori mai lente dect cele
compilate. Totui, precum Java, Python este si un limbaj byte-compiled ,rezultnd o
forma intermediara mai aproape de main. Acest aspect face ca pythonul s fie un
limbaj rapid, dar s permit pstrarea tuturor avantajelor unui limbaj interpretabil.
Mai jos am adugat cteva lucruri impresionante legate de Python, in speta despre
aplicabilitatea Python in diferite zone ale IT-ului:

Python Curriculum

o Filme animate (Industrial Light & Magic, Sony Pictures Imageworks,


Disney, Pixar)
o Youtube folosete Python pentru cutarea intre milioanele de filme.
o Realizarea de cutri pe internet (Google, Infoseek)
o Script-uri GIS pentru hri (ESRI)
o Distribuirea de fiiere diverse pe Internet (BitTorrent)
o Prognoza meteo (U.S. National Weather Service, NOAA)
o Test computer hardware (Seagate, Intel, Hewlett-Packard, Micron, KLA)
o Analiza numerica (NASA, Los Alamos National Laboratory, Lawrence
Livermore National Laboratory, Fermi)
o Criptografie i analiza financiara (NSA, Getco)
o Jocuri i grafica (Activision, Electronic Arts, Infogames, Origin, Corel,
Blender, PyGame)
o Navigarea navetelor spaiale i experimente de control (Jet Propulsion
Laboratory)
o Yahoo maps i cautare n directoare (Yahoo!)
o Ghid pentru instalarea Linux i mentenan (Red Hat)
o Implementarea de siteuri web (Disney, JPL, Zope, Plone, Twisted,
Instagram)
o Crearea de sisteme de aprare cu rachete (Lockheed Martin)
o Administrarea de liste de mail (Mailman)
o Postarea pe Facebook
Aceste sunt doar cteva din domeniile de aplicabilitate a limbajului de programare
Python. Aplicabilitatea se bazeaza pe module sau package-uri ce pot extinde
functionalitate standard a python-ului.
Alte preri profesionale despre python putei gsi pe pagina:
http://www.python.org/about/quotes/
In alt aspect interesant este filozofia Python scrisa de Python core developer, Tim
Peters.
Prin comanda import this putem vedea o parte din aceasta filozofie.

Python Curriculum

Fig. 1

Instalare
Python este disponibil pe site-ul oficial dar i pe alte site-uri de profil:
http://www.python.org
Dup cum se poate vedea n fig. 1, Python se poate gsi sub diferite forme. La ora
actuala exista doua versiuni. Versiunea 2.7 i versiunea 3.2.
Python pune la dispoziie adugarea de funcionalitate n plus prin instalarea de
module, module ce se gsesc n comunitatea python. Scopul este de a uura munca
programatorului.
Din pcate versiunea 3.2 vine cu mici schimbri incompatibile cu 2.7. Toate modulele
adiionale au fost dezvoltate n versiuni mai vechi. Unele din aceste module au fost
traduse, altele nu. Sunt module care nu au avut nevoie de o mapare, n funcie de

Python Curriculum

coninutul modulului. Exista un script numit 2to3 ce traduce codul din python 2.x in
python 3.x
De asemenea, ar trebui s inem cont c la apariia acestui limbaj de programare, toate
mainile ofereau o arhitectura pe 32 de bii. Acum situaia s-a schimbat, mainile ce au
o arhitectura pe 32 de bii devenind o raritate. Din pcate, unele module au fost create
doar pentru 32 de bii, neexistnd o tranziie a acestora pe 64 de bii. Pentru o
compatibilitate cat mai buna recomandam Python 2.7 pe 32 bii. Puteti accesa acest link
pentru a descarca python.

Fig. 2

Instalarea pe Windows presupune rularea executabilului pe care l-ai copiat local de pe


site-ul python.org pe un sistem de operare Windows. n cazul care acceptai setrile
standard, python se va instala n directorul C:/Python27/

Python Curriculum

Fig. 3

Odat instalat Python include n interiorul fiierelor instalate i un program de


interpretare numit IDLE. Acesta are doua moduri de funcionare: modul Interactiv i
modul Script.
Daca apelam seciunea de descarcari alternative a site-ului (
https://www.python.org/download/alternatives/) putem gsi alte site-uri care lucreaz
pentru a aduce un surplus de funcionalitate Python-ului standard, deci care conine
module adiionale, care n mod normal ar trebui s fie instalate dup ce setup-ul pythonului a fost rulat.
Pe acest site gsim i instalri alternative cum ar fi ActiveState-ActivePython. Active
State este o companie ce pune la dispoziie package-uri (limbaje de programare cu
librarii/module incluse) pentru diverse limbaje de programare, printre altele i pentru
python. Este o companie ce ncearc s realizeze un profit de pe urma softurilor
gratuite prin adugarea de funcionalitate fie gratuit, fie realizata de inginerii
companiei. ActivePython include modulele lui Mark Hammond pywin32 dar i module
de GUI precum PyQT sau wxPython, module pentru baza de date etc. Din pcate
acestea se regsesc doar n variantele cu plat, cu o remuneraie destul de consistenta
varianta Business regsindu-se la 999$ pe an pentru o instan OS.

Python se poate instala pe multe sisteme de operare precum:

Python Curriculum

Python pentru AIX


Se va utiliza fie Python 2.1 pentru AIX ,fie o varianta cu plat de la ActivePython.

Python pentru AROS


Se poate utiliza PyAROS pentru Amiga Research OS.

Tim Ocock mentine AmigaPython..


Python pentru AS/400 (OS/400)
Puteti apela http://www.iseriespython.com portat de Per Gummedal.

Python pentru BeOS


Ultima varianta este BeBits.

Python pentru MorphOS


Python pentru MS-DOS
Python pentru OS/2
Aceasta varianta este meninut de Andrew MacIntyre

1. Python pentru OS/390 si z/OS


Putei apela http://www.teaser.fr/~jymengant/mvspython/mvsPythonPort.html pentru
mai multe detalii
2. Python pentru Palm OS
Putei apela http://pippy.sourceforge.net/ pentru mai multe detalii.
3. Python pentru PlayStation
Erwin Coumans a portat o parte de Python ctre Sony PlayStation 2.
4. Python pentru Psion
Exista o portare pentru EPOC (Psion) Python port (v2.1) pe site-ul
http://sourceforge.net/projects/epocpython/ pentru mai multe detalii.
5. Python pentru QNX
Putei apela http://sourceforge.net/projects/pyqnx pentru mai multe detalii.
6. Python pentru (Cea fost inainte Acorn) RISC OS
Citeste te rog RISCOS/README n directorul sursa Python 2.x . Suportul pentru
RISC OS a fost eliminat n Python 3.x.

Python Curriculum

7. Python pentru Symbian 60/ Nokia


Nokia a portat Python 2 ctre platforma smartphone Symbian OS 60. Putei apela
http://sourceforge.net/projects/pys60/ pentru mai multe detalii. Cel mai de succes
proiect este QT.
8. Python pentru Solaris
Poi achiziiona ActivePython ( versiuni comerciale contra cost ) .
Sunfreeware.com este o pagina web care are o varietate de versiuni Python pentru
o varietate de versiuni Solaris. Acestea utilizeaz pachete de instalare standard Sun
cu extensia pkgadd.
9. Python pentru Windows CE sau Pocket PC
10. Python for HP-UX
11. Python for Linux
12. Python pentru Android
Putei apela http://code.google.com/p/python-for-android/ pentru mai multe detalii.
13. Python pentru MAC
Putei apela http://homepages.cwi.nl/~jack/macpython/index.html pentru mai multe
detalii.
Pentru mai multe detalii privind suportul oferit de Python in a fi rulat pe diferite sisteme
de operare accesati acest link https://www.python.org/download/other/
In concluzie python poate fi utilizat pe orice sistem de operare unde exista un
compilator pentru a compila sursele i unde este cazul portarea codului. Prin urmare
unde exista interes financiar n a dezvolta acesta portare Python a fost deja dezvoltat,
dup cum se poate vedea i mai sus.
In ceea ce privete sistemele de operare uzuale nc se dorete un limbaj de
programare cross-platform. Ceea ce nseamn ca multe din proiecte cum ar fi PyQT
sau Kivy pot oferi un program ce poate fi rulat pe mai multe platforme. PyQT este un
proiect prin care se poate realiza construcia de interfee grafice, poate fi rulat pe cele
cinci sisteme de operare cele mai uzuale din lume (Windows, Linux, Symbian, Apple iOS, Android ).
In ceea ce privete Linux, multe din distribuii vin cu Python deja instalat. Unele din cele
mai uzuale distribuii, cum ar fi Ubuntu i Fedora vin cu Python 2.7 preinstalat pentru o
compatibilitate maxima.
Pentru a testa daca exista instalata o vesiune Python n distribuia Linux pe care o avei
instalata, tastai n cadrul unei ferestre terminal cuvntul cheie python apoi apsai
enter.
Dup cum se poate vedea putem deja s lucram cu python-ul, calculnd spre exemplu
o adunare a doua numere ntregi. Acest lucru este valabil i n Windows.

Python Curriculum

Pentru a iei din acest mod de lucru trebuie s tastai exit() apoi s apsai enter.

Fig. 4

In cazul n care dorii s avei mai multe instalari de Python n sistemul de operare
Windows va trebui s modificai sau adugai n variabilele de sistem i o variabila
numita Path ce indica unde este directorul sursa Python.
Iat o procedura cum putei face asta n cazul n care compania a achiziionat un
ActivePython cu module speciale, adaptate la nevoile companiei.
1.
2.
3.
4.
5.

Click dreapta pe My Computer apoi alegem din meniu Properties


Selectam tabul Advanced
Selectam butonul Environment Variables (poziionat n partea de jos stnga)
In seciunea System Variables caui "Path" i selectezi aceasta variabila
Apei pe Edit i adaugi ca variabila C:\Python27_active\;

Mai jos se poate regsi n Figura 5 un exemplu de modificare a variabilei de cale pentru
ActivePython.

Python Curriculum

Fig. 5

Tipuri de fiiere
In directorul sursa Python (exemplu C:\Python27) se regsesc doua fiiere executabile:
python.exe Programul Python ce ruleaz n modul consola. Acest lucru
determin apariia unei console pentru orice rulare a unui script python.
De multe ori acest lucru este benefic, mai ales daca scriptul nu creeaz interfee
grafice.
pythonw.exe Programul Python ce ruleaz n modul non-consola. Are rolul de
evita ferestrele urate de tip DOS cnd nu lucram cu input/output-ul standard.
Acest executabil este des utilizat la construirea de interfee grafice sau la
construirea de daemon-uri/servicii.
Cnd Python a fost instalat, a fost asociat cu anumite tipuri de fiiere, ce vor fi vzute n
Windows ca fiind executabile. Prin urmare daca dam dublu click pe unul din aceste
fiiere din cadrul Explorer-ului va avea ca urmare rularea acelui fiier. Aceste fiiere au
extensia py, .pyw, .pyc, .pyo.

10

Python Curriculum

Python este interpretat n aceeai maniera ca i Java: codul sursa python ce se


gsete n fiierele *.py sau *.pyw sunt automat compilate (translatate) de interpretor
ntr-o forma intermediara i independenta de platforma, care ulterior este executata de
Python virtual machine. Python virtual machine este sistemul de execuie python sau
motorul de rulare al limbajului. Python virtual machine mai poarta si numele de
interpretor. Traducerea n byte code se realizeaz cnd dorim sa rulam. Byte code nu
este cod main i este n cele din urma executat prin platforme de tip Python virtual
machine, nu direct de ctre hardware-ul computerului.
O modalitate importanta de accelerare a timpului de pornire pentru programele Python
ce utilizeaz module este fiierul pyc. n cazul n care avem un fiier numit spam.pyc ce
exist n directorul n care se afla spam.py, fiierul spam.pyc reprezinta o versiune deja"octet-compilata " (already-byte-compiled) a modulului-ului spam. Timpul de
modificare al versiunii de spam.py folosit pentru a crea spam.pyc este nregistrat n
spam.pyc. n cazul n care timpul nregistrat n fiierul *.pyc nu se potrivete cu timpul
ultimei modificri a fiierului *.py, fiierul pyc este ignorat si apoi rescris. Deci *pyc este
creat automat la prima rulare a programului si se updateaza fara ca noi sa intervenim in
acest proces. Trebuie amintit i faptul c fiierul cu extensia *pyo este un fiier pyc
optimizat. Deoarece *.pyc este optimizat pentru o rulare cat mai eficienta intr-un mod
automat, optimizarea manuala nu-si are rostul decat in cazul in care dorim sa realizam
fisiere in C.
Un program nu ruleaz mai repede atunci cnd este citit dintr-un fiier ".pyc" sau ".pyo"
dect atunci cnd este citit dintr-un fiier ".py", Singurul lucru care este mai rapid cnd
folosim .pyc. sau".pyo " este viteza de ncrcare a fiierelor din module.
Ar trebui sa discutam un pic despre diferenta dintre *.py si *.pyw. n general vom salva
un fiier sursa ca avnd extensia pyw n loc de py cnd dorim s apeleze pythonw.exe.
n urma acestei modificari nu vom vedea dect elementele grafice, consola fiind
suprimata. Aceasta facilitate este des ntlnita n interfeele grafice sau la programe de
tip server.
Putem intalni mai rar fiierul cu extensia .pyd, fiier ce face parte tot din suita de fiiere
python. Acest tip de fiier este de obicei un fiier de tip librrie dinamica Windows (
avnd extensia .dll - Dynamic-link library), fiind redenumit ntr-un fiier cu extensia .pyd.
n primul rnd ar trebui s tim ca un fiier dll poate cuprinde resurse, executabile
scripturi i drivere (prin urmare orice tip de fiier). Aceste fiiere sunt stocate ntr-un dll
pentru a modulariza codul pentru o eventuala reutilizare, eficientizarea memoriei i
reducerea spaiului de pe hard disk. Prin urmare fiierele de tip dll ofer o ncrcare mai
rapida, ruleaz mai rapid, i ocupa mai puin spaiu pe disc.
Mai multe detalii despre fiierele de tip dll putei gsi pe site-ul Microsoft:
http://support.microsoft.com/kb/815065
Am putea s folosim aceste fiiere care sunt deja implementate n python. Bineneles
ca putem utiliza direct fiierul cu extensia dll, dar majoritatea fiierelor dll aparin

11

Python Curriculum

dezvoltatorilor de aplicaii contra cost. Un exemplu bun ar fi crearea unui program de


arhivare cu diferite extensii. Python vine cu anumite module de arhivare, dar
recunoaterea fiierelor arhivate sub extensia 7z este mai dificila. Aici se poate utiliza
redenumirea fiierului 7z.dll in fisierul 7z.pyd pentru a utiliza resursele dll-ului n
programul python.

Tool-uri pentru Python


Pentru a dezvolta programe Python putem apela la doua mari soluii. Aceste tooluri se numesc IDE (Integrated Development Environment) i reprezint un set de
aplicaii ce formeaz o platforma cu scopul de a ajuta programatorul s dezvolte
aplicaii Python. Primul IDE este instalat cu Python2.7.x. i se numete IDLE. Cel de-al
doilea IDE se numete Eclipse i este un program dezvoltat de un consoriu de firme.
IDLE este un IDE ce poate fi folosit n doua moduri: modul Interactiv i modul Script.
Modul Interactiv poate fi apelat prin deschiderea programului IDLE. Este cel mai rapid
mod de a studia i testa o parte de cod. Acest mod ne ofer posibilitatea de a
interaciona interactiv cu limbajul de programare deoarece orice comanda apelezi el o
va rula imediat.

Fig. 6

12

Python Curriculum

Putem s realizam acelai lucruri ca i n consola, avnd n plus suport pentru debug i
un meniu grafic cu toate facilitile de care avem nevoie. Aceasta fereastra se mai
numete i Python Shell. La command promt ( >>> ) introdu urmtoarea secvena:
print "Salut Python! Salut PRIETENI ! "
Interpretorul ne returneaz <<Salut Python! Salut PRIETENI ! >>. Acesta este primul
program, Probabil ai ghicit ce realizeaz aceasta comanda, i anume va afisa pe
ecran mesajul :Salut Python! Salut PRIETENI !
Din punct de vedere al limbajului programatorilor aceasta linie se numete statement i
este o instruciune completa. Aceasta instruciune este formata din doua parti. Prima
parte print este o comanda. Spune interpretorului s fac o aciune i ce aciune.
Python este sensibil la diferenele de litere mari sau mici. Deci print e diferit de Print
sau PRINT. Se poate vedea n Fig. 7 diferena dintre ele.

Fig. 7
Putem vedea ca Python IDLE recunoate cu uurina cuvintele cheie cum ar fi
comenzile; prin urmare n timp ce le scriem sintaxa va schimba culoarea n portocaliu.
Expresiile cum ar fi acest ir de caractere, pe care noi l-am printat anterior, sunt afiate
n verde.
Output-ul returnat de interpretor se regsete n culoarea albastra. ncet i cu practica
codurile culorilor vor fi nvate fr s va dai seama.

13

Python Curriculum

SyntaxError este un mesaj al interpretorului care ne indica ca sintaxa nu este corecta.


Acest mesaj se regsete afiat n culoarea roie.
De reinut ca Python are un interpretor foarte puternic, astfel ca n cazul unei erori va
indica linia i eroarea. n cazul n care eroarea apare sub diferite fiiere ce conin apelri
multiple n acestea, va arata tot parcursul apterilor n fiecare fiier pana la eroare. Acest
aspect este superior altor limbaje care afieaz doar eroarea final.
S vedem cum putem utiliza programarea IDLE n script mode.
Utilizarea modului interactiv returneaz output imediat si nu putem salva programul
nostru. Acest mod este foarte bun, mai ales cnd nvei lucruri noi sau ncerci o parte de
cod care nu-i nelegi comportamentul. Dar acest mod nu a fost conceput pentru
crearea de programe unde poi salva i rula ulterior. Modul IDLE script ofer scrierea,
editarea ncrcarea i salvarea programului tu. Este ca Nodepad sau Word. Dar de ce
nu folosim nodepad pt. a edita *.py? Deoarece nu vom avea culorile ce ne ajuta s
recunoatem codul, nu vom putea rula in mod direct etc.
Poi deschide o fereastra n script mode din interactive mode , apelnd din File>New
Window.
Daca scriem n interiorul ferestrei o sintaxa de print, vom putea rula acest program din
Run>Run Module. Pentru c acest program nu este salvat nc va trebui sa-l salvai
nainte de a putea rula. Fig. 8 i 9 va vor ndruma cum s executai corect rularea
programului.

Fig. 8

14

Python Curriculum

Putem observa ca liniile libere nu afecteaz n nici un mod rularea programului.

Fig. 9

Avem posibilitatea de a scrie comentarii n programul nostru, comentarii care nu au nici


un efect n rularea acelui program. Aceste comentarii au rolul de a ne ndruma, de a
aduga informaii utile sau de a elimina funcionalitate prin comentarea anumitor linii.
Poate comentariile nu par un lucru util pentru programele mici scrise de o singura
persoana, dar i n acest caz dup cteva luni va fi destul de greu s va aducei aminte
cum ai conceput acel program. Sa ne gndim un pic la programele scrise i meninute
de mai muli dezvoltatori fiecare cu experiena i obiceiurile lui. Conform unui studiu
aproximativ 70 % din timpul alocat programrii este alocat pentru meninerea codului.
Prin urmare orice comentariu este foarte util.
O linie comentata ncepe cu caracterul # . Putem s folosim caracterul # i la jumtatea
liniei comentnd o parte din aceasta linie.

15

Python Curriculum

Fig. 10

Exista un cod de buna conduita n ceea ce privete partea superioara a unui curs. Astfel
primele trei linii ar trebui s reprezinte informaii despre program, ce rol are acest fiier
n cadrul programului, cine a lucrat la acest fiier, versiune i data ultimei editri.
Aceasta este doar o recomandare. Interpretorul nu va returna eroare daca nu intalneste
primele trei linii comentate.

# Salut Prieteni
# Demonstreaza comanda print
# Ion Studentul - 12/09/13 vers 6

n cazul n care rulam prin dublu click acest program, putem vedea doar o fereastr
neagr pentru o fraciune de secund, i asta datorita faptului c interpretorul Python va
rula codul, apoi va iei.
Pentru a putea vedea i rularea acestui cod vom aduga la final o linie cu statut special.
Acesta linie se regsete n general n toate programele python de tip non grafic i are
scopul de a opri rularea pana la apsarea tastei enter.
raw_input("Apasa <Enter> pentru a iesi.")
n acest mod putem vedea ce a rulat pana la ultima linie. Dupa ce utilizatorul apasa
enter , programul se va incheia.

16

Python Curriculum

Eclipse este un mediu de dezvoltare open-source scris preponderent n Java. Acesta


poate fi folosit pentru a dezvolta aplicaii Java, C, C#, Python, TCL i, prin intermediul
unor plug-in-uri, n alte limbaje, cum ar fi C, C++, COBOL, Python, Perl, i PHP. De
dezvoltarea s se ocup Fundaia Eclipse : http://www.eclipse.org/
Acesta are un debugger incorporat foarte bun si vine cu tot felul de posibiliti de a
modifica i personaliza interfaa utilizatorului. Din acest motiv devine foarte uor de
folosit i este disponibil pentru mai multe tipuri de sisteme de operare. Eclipse este
programul recomandat pentru curs, dar nu este obligatoriu. Astfel se poate opta pe care
varianta o considerati mai uoara.
In urmtoarea seciune vom vedea cum se instaleaz i se seteaz Eclipse pentru a
dezvolta programe Python.
Copierea Eclipse se poate face accesnd acest link:
http://www.eclipse.org/downloads/

Alegei va rog varianta standard (Eclipse IDE for Java developers) pentru sistemul de
operare de 32 de bii.
Dezarhivai fiierul ntr-o locaie cunoscuta cum ar fi C:\Program Files (x86)\Eclipse
Deschidei executabilul eclipse.exe (putei s facei un shortcut ctre desktop pentru a fi
mai uor de apelat).
Dup deschiderea programului acesta cere o cale ctre workspace, directorul unde va
salva toata munca. De preferat s alegei o cale pe o partiie separat de cea a
sistemului de operare pt. a va putea salva munca n caz de virusare sau corupere a
sistemului de operare.

17

Python Curriculum

Fig. 11
Odat instalat avem un Eclipse pe care nu l-am personalizat pentru python. Pentru a
instala programele de care avem nevoie n python apelai din meniu: Help>Install new
software. n Fig. 12 se poate vedea fereastra ce se deschide apelnd aceasta opiune.

Fig. 12

18

Python Curriculum

In celec ce urmeaza vom instala o librrie PyDev care devine disponibila daca accesam
prin intermediul Eclipse site-ul:
http://pydev.org/updates
Pentru a aduga un site (numit repository), va trebui s dm click pe butonul de Add,
apoi s completm site-ul http://pydev.org/updates la sectiunea site i un nume
sugestiv. Va trebui s alegem acest repository nou format din lista (pick-list-ul) pe care
o avem la dispoziie in stanga butonului Add (triunghul cu varful in jos). n cmpul type
test here putem s scriem PyDev. Vom avea la dispoziie doua opiuni: PyDev for
Eclipse i PyDev MyLyn Integration. Le vom selecta pe amndou aa cum se poate
vedea i n Fig. 13.

Fig. 13
Vom da click pe Next urmnd instruciunile de instalare i acceptnd condiiile n cazul
n care suntem de acord. Atenie! n cadrul instalrii exista i o atenionare (warning) pe

19

Python Curriculum

care va trebui sa o acceptai pentru ca instalarea s fie fcut cu succes. Dup


instalare, se va cere restartarea aplicaiei.

Fig. 14

Dup restart, vom putea crea proiecte Python. Crearea unui proiect se poate face
apelnd din meniu: File> New>Project.
Vom alege s cream un proiect de tipul PyDev aa cum este prezentat i n Fig. 15

Fig. 15

20

Python Curriculum

Dup apelarea butonului de Next va trebui s facem anumite alegeri cu privire la


numele proiectului, directorul rdcin al proiectului, tipul de proiect(python, jython,
IronPython), versiunea de Python (recomandat 2.7) i modul cum este ataat directorul
proiectului la directorul rdcin al proiectului. Jython este un modul de python care
permite combinarea de python cu Java, iar IronPython este un modul de Python care
permite dezvoltarea de Python n Visual Studio i combinarea cu .Net i C#. Pentru
nceput, vom seta ca n Fig. 16

Fig. 16

21

Python Curriculum

Observam ca butonul de Next sau Finish nu este disponibil, iar n partea superioara a
ferestrei vedem i motivul: Project interpreter not specified. Acest warning se refera la
verificarea i alegerea unei versiuni de python din cele instalate. Pentru a rezolva acest
impediment, va trebui s apelam link-ul albastru ce se gsete la mijlocul ferestrei:
Please configure an interpreter n the related preferences before proceeding
Alegem autoconfig i vom da click ok la cutarea i adugarea interpretorului gsit.
Dup setarea interpretorului python vedem ca este disponibil i butonul de Finish.
Apsnd butonul de Finish vom fi ntrebai daca perspectiva vizuala ar trebui schimbata
cu cea a proiectelor PyDev. Vom apsa pe butonul de Yes.

Fig. 17

Din acest moment Eclipse cu Python este disponibil. Putem crea fiiere sau directoare,
putem rula i face operaiuni de debug.

22

Python Curriculum

Rularea unui program se poate face dand click dreapta pe acel fisier apoi alegand Run
As >> Python Run. In partea dreapta unde regasim tab-ul Console vom putea vedea
rularea acelui program.

Fig. 18

Lucru cu iruri de caractere


In primul program Salut Prieteni am putut s afiam primul nostru ir de caractere
(string n lb.en.). Dar irurile de caractere pot deveni mult mai lungi i mai complexe.
Spre exemplu dorim s dam indicaii despre folosirea meniului unui program de tip
consol. Ar fi destul de obositor s scriem cate o linie, astfel ca folosim ghilimelele
triple. Programul de mai jos exprima acest concept.

23

Python Curriculum

Fig. 1

Cum ai putut observa putem crea string-uri folosind ghilimele simple sau duble.
Astfel n primul statement de print vedem ca am utilizat la nceput ghilimele simple, apoi
ghilimele duble, dup care iari ghilimele simple. Regula este simpl: dac ncep cu
ghilimele simple s termin cu ghilimele simple. n acest caz ghilimelele duble for fi
tratate ca un caracter normal. n cazul n care folosesc ghilimele duble la nceput i la
final, ghilimelele simple vor fi tratate ca un caracter normal.

Fig. 2

24

Python Curriculum

Aa cum se poate vedea i n Fig. 2 putei utiliza cate ghilimele dorii n interiorul irului
de caractere att timp cat sunt diferite de ghilimelele de la nceput i final.
Daca aceasta regul nu este respectat interpretorul va genera erori.
Revenind la programul Reamintire meci.py gsim sintaxa print \ pe rndul al 7-lea. n
cazul n care au o sintaxa care se ntinde pe mai multe caractere, depind 80
caractere (in general limea unui ecran) , va deveni greu de citit pt. dezvoltatorii python
care au rolul s menin codul. Cu caracterul slash \ putem obliga interpretorul s
ignore enter-ul de dup caracter i s interpreteze liniile ca o singura sintaxa.
Mai jos regsim un exemplu n care caracterul slash mparte un citat pe mai multe linii
n afara i n interiorul irului de caractere.

Fig. 3

In programul Reamintire meci, ncepnd de la linia 8 vedem un ir de caractere ce se


ntinde peste mai multe linii, folosind ghilimele triple. Fie ca folosim trei ghilimele simple
la nceput i trei ghilimele simple la final, fie ca folosim trei ghilimele duble la nceput i
trei ghilimele duble la final vom avea acelai rezultat. n cazul n care le combinam
interpretorul va genera o eroare.
Imaginea formata din caractere alpha i non-alpha numerice afiata in program, este
denumita ASCII Art. ASCII Art este o pictura din caracterele ce se gsesc la tastatura.
Acest tip de arta nu este noua i nu a aprut odat cu era calculatoarelor, aa cum era
de ateptat. Primul desen nregistrat pe maina de scris dateaz nc din 1898.
Deoarece unii au transformat aceasta pasiune ntr-o arta putei accesa pagina de mai
jos pentru a putea vizualiza, utiliza i modifica adevrate opere de arta ASCII:
http://www.chris.com/ascii/ .

25

Python Curriculum

In urmtorul program vom putea nva despre secvenele de evadare (escape


sequence). Acestea sunt caractere speciale ce au rolul de a schimba comportamentul
normal al afirii unui ir de caractere, oferind o flexibilitate avansata n afiare.

Fig. 4

Fig. 5

26

Python Curriculum

Sa discutam despre elementele noi care se regsesc n cadrul acestui program.


print \a
Aceasta sintaxa va genera un sunet de bip. Exista ns o condiie: rularea trebuie s se
realizeze prin dublu click (Windows) sau prin comanda python file.py (linux). Prin
urmare nu putem s rulam programul in cadrul IDLE sau Eclipse pentru a declana un
sunet de bip. In cadrul IDLE sau Eclipse va fi afiat n schimbul secvenei de evadare
\a un caracter special.
Putem auzi n program rulat mai sus doua bip-uri deoarece de fiecare daca cnd
interpretorul ntlnete aceasta secvena \a va genera un sunet.
Secvena de evadare \t are ca efect mutarea sirului de caractere cu un tab. Un tab
este reprezentat de 4 spatii. Deci, n cadrul programului gsim mai multe secvene de
evadare de acest tip care genereaz ca outputul programului s fie deplasat ctre
dreapta corespunztor cu un nr. de taburi.
O alta secvena de evadare este caracterul backspace, utilizat i n programul anterior.
Daca data trecuta am utilizat backslash pt. a putea anula caracterul enter. De aceast
dat caracaterul backslash anuleaz nsemntatea caracterului backslash pentru a
putea fi afiat. n Fig. 6 se regsesc exemple care deservesc la o nelegere mai ampla
a conceptului de anulare a urmtorului caracter dat de backslash.

Fig. 6

27

Python Curriculum

Se poate vedea ca daca n cadrul unui string punem backslash i space avand acelai
efect ca atunci cand avem doua backslash-uri unul dup altul. Printarea unui backslash
n mod direct nu se poate efectua deoarece ar anula importanta data de ghilimele(fie
simple fie duble). Un alt aspect important al backslash-ului este c poate s ne ajute la
afiarea diferitelor tipuri de ghilimele, anulnd nsemntatea ghilimelei i transforma
ghilimeaua intr-un caracter normal. Din aceast cauza vedem c interpretorul va returna
o eroare de sintaxa care e similara cu eroarea data de sintaxa:
print Lipseste ultima ghilimea.
Totui n cadrul programului Informatii parola uitata putem afia adresele de e-mail ca
fiind ncadrate n ghilimele fr ca interpretorul s returneze o eroare.
Secvena de evadare \n are scopul de a introduce enter linie noua (new line) dup
acest caracter. Mai jos avem o figur n care se poate regsi un echivalent al acestei
secvene de evadare.

Fig. 7

Aa cum ne indica i Fig. 7 putem s utilizam i alte metode de a afia o noua linie, dar
metoda secvenei de evadare /n este ce mai uor de identificat n cod.
In sectiunea urmatoare vom discuta despre repetarea i concatenarea sirurilor.
Vi s-a ntmplat s auzii anumite discuii despre educaie n cadrul colilor, cum ar fi
metodele de nvmnt ce folosesc pedeapsa i rsplata. Una din metodele preferate
de pedagogi este pedepsirea prin scrierea repetitiva a unui ir de caractere ce are o
nsemntate deosebita. Un exemplu ar fi: Promit s nu mai fur mncare la colegi.
Daca am folosi python i am dori s scriem un ir de caractere de mai multe ori am
putea utiliza chiar semnul nmulirii, operatie numita repetare. Dar n cazul n care am

28

Python Curriculum

dori s unim mai multe iruri de caractere? Soluia se regsete n programul de mai
jos:

Fig. 8

Dac folosim semnul + pentru concatenare i semnul * pentru repetiie, nu ar trebui s


privim irurile de caractere ca fiind numere! Acestea nu funcioneaz cu semnul minus
sau cu cel de divizare /.

29

Python Curriculum

Fig. 9

Lucrul cu numere
In urmatorul program vedem cum putem s utilizam numerele i s efectuam operaii
numerice.
# Lucrul cu numere
# Demonstreaza lucrul cu numere
# Ion Studentul 1/11/13
print "\n\tTema matematica clasa a 4a\n"
print "Rezolva adunarea: 2+2"
print 2+2
print \
"""\nCat canteste o balena de 2000 kg care a nascut un pui de 100 kg."""
print "2000 - 100 = ",
print 2000 - 100
print "\nRezolva imnultirea 333*3? Raspunsul corect este", 333*3,"! "
print "24 / 6 = ",
print 24 / 6 ,
print "(impartire)\n"
print "107 % 4 = ",
print 107 % 4, "Aceasta operatie se numeste modulo!\n"
print \
"""Operatia matematica de mai jos aplica impartirea cu rest!"""
print "19 / 4 = ",
print 19 / 4

30

Python Curriculum

print "Gresit!"
print "Raspunusl corect este :",19.0 / 4
print "\nOperatie mateamatica complexa1: [(2+2)*3]/4 =" ,((2+2)*3)/4,"\n"
print "Operatie mateamatica complexa2: 2*2*2*2 =" ,2 ** 4,"\n"
raw_input("\n\nApasa <enter> pt a iesi.")

###########################################################################

Fig. 1
In Fig.1 se poate observa rularea programului Lucrul cu numere.
S vedem ce elemente noi avem n acest program.
In primul rnd Python poate realiza toate operaiile matematice elementare cu foarte
mare uurina. Acestea se pot apela n mod direct prin comenzi de genul :
print 2+2
Un alt element cheie n afiarea diferitelor tipuri de date este virgula ,. Virgula permite
afiarea diferitelor structuri de date sub aceeai sintaxa, cum ar fi numerele i irurile de

31

Python Curriculum

caractere. Cum acestea nu se pot concatena singura posibilitate ar fi virgula care face
ca interpretorul s ia fiecare element n parte din acea sintaxa i s apeleze separat
comanda print, apoi s uneasc outputul fiecrei comenzi, aa cum se poate vedea i
n Fig. 2.

Fig. 2
Virgula mai permite i unirea a mai multe linii pe o singura linie:
print "2000 - 100
print 2000 - 100

= ",

Cele doua sintaxe de mai sus vor fi afiate sub aceeai linie datorita virgulei ce se
regsete la finalul primei sintaxe. Se poate observa c comanda print exista si pe
urmatoarea linie. Prin urmare extinderea comenzii care era valid prin utilizarea
backslash-ului nu se aplic i aici datorita repetarii cuvantului cheie print. Deci aplicarea
celor doua linii de mai jos va genera eroare:
print "2000 - 100
print 2000 - 100

= "\

Pe lng operaiile clasice de adunare, mprire, nmulire i scdere, python este


capabil i de a face operaii cu paranteze . Cum parantezele ptrate i acoladele au alt
rol n python peste tot se vor folosi paranteze rotunde.

32

Python Curriculum

Putem s efectuam operaii matematice exponeniale folosind gruparea de simboluri


** , unde primul numr este baza, iar al doilea numr este exponentul. Spre exemplu x
la puterea y in python se scrie ca x**y.
O alta operaie al crui nume este modulo i realizandu-se cu ajutorul % este valabil
n Python. Operaia matematic 7%3 va fi egal cu 1 deoarece modulo returneaz
restul mpririi lui 7 la 3. Sapte impartit la 3 dau 2 rest 1.
In Python numerele pot fi de trei feluri: integer, float i complex. Numerele integer sunt
numele ntregi la care mprirea nu se face pe baza restului, care va fi ignorat. Daca
dorim o mprire de precizie va trebui s folosim numere float. Acestea sunt
reprezentate de numere care au cel puin o zecimal dup virgul. n acest mod python
difereniaz numerele float de cele integer. Daca cel puin unul din elementele unei
mpriri este float (numitorul sau numrtorul) rezultat, rezultatul va fi float. Acest
aspect ne ajuta n programele n care numrtorul nu-l introducem noi, dar dorim ca
rezultatul s fie float.

Fig. 3
Orice operaie matematic am realiza n python, unde unul din numere este float,
rezultatul va fi float.
In python exist i notiunea de numere complexe. Un exemplu de numr complex ar fi :
2+2i. Datorita faptului ca n America se folosete litera <<j>> n loc de <<i>> pentru a
identifica partea complexa a unui numr complex, aa vom regsi i noi numerele
complexe n python.

33

Python Curriculum

Fig. 4
In ceea ce priveste numele pozitive si cele negative, aceste se pot crea adaugand
minus in fata. Daca dorim sa extragem modulul unui numar atunci putem folosi functia
standard abs(). Functiile sunt acele operatii care permit intre paranteze o valoare (fara a
fi aplicate cu punct).

Fig. 5

Asa cum v-ati dat seama si raw_input este o functie standard.


Numelere complexe au, asa cum stiti, o parte reala si o parte imaginara. Pentru a
extrage partea reala dintr-un numar complex aplicam atributul .real, pentru a extrage
partea imaginara dintr-un numar complex aplicam atributul .imag.

Fig. 6

34

Python Curriculum

Un atribut este ceva ce poate fi dat cu punct la finalul unui tip de date. In cazul in care
un atribut are paranteze atunci se numeste metoda de manipulare. Spre exemplu,
conjugarea unui numar complex se obtine prin aplicarea metodei de manipulare
conjugate() si reprezinta schimbarea semnului partii imaginare.

Fig. 7

Variabile si conversii intre tipuri de date


Cu ajutorul variabilelor informaia poate fi stocat i manipulat, un aspect fundamental
n programare. Python permite crearea i manipularea de variabile. Dar care ar fi
motivul pentru care am avea nevoie de variabile? Cel mai bun motiv este flexibilitatea
de a schimba o anumita variabila aa cum se poate vedea n programul urmtor.
# Stefan Cel Mare
# Demonstreaza lucrul cu variabile
# Ion Studentul 1/11/13

s = "Stefan cel Mare"


st =s+" i Sfant"
print "\tLectie de istorie: Stefan cel Mare\n"
print s," a domnit intre intre anii 1457 i 1504.\n"
print
print
print
print

s, " a avut 36 de batalii, din care a castigat 34."


s, " a fost canonizat in 1992 pentru eforturile supraonenesti de "
"a pastra indentitatea nationala."
"Astfel ", s ,"devine", st , "."

raw_input("\n\nApasa <enter> pt a iesi.")

35

Python Curriculum

Fig. 1

Prin urmare, variabila s va stoca irul de caractere Stefan cel Mare . Apoi de fiecare
dat cnd apelam variabila s putem utiliza coninutul (ce stocheaza) variabilei s.
Adiional putem s folosim variabila s pentru a crea noi variabile cum ar fi crearea
variabilei <<st>> din exemplu de mai jos. Ce credei c o s afieze printarea variabilei
<<st>>?
Aa cum probabil ai intuit, am putea s redefinim variabila s pe care o putem utiliza cu
noua valoare. Prin urmare, interpretorul va returna un output ca n Fig. 1
Numele variabilei nu a fost ales ntmpltor. Daca stm s ne gndim la un program
mic aceasta variabila nu ar ncurca dezvoltatorul aplicaiei, dar n cazul n care
programul este mare devine suficient de dificil s ne amintim ce stocheaz variabila s,
neavnd un nume sugestiv. Dar ce nume ar putea lua o variabila ?
O variabil poate fi formata din litere, numere i underscore _ . Primul caracter din
numele unei variabile poate fi doar o liter sau underscore. Variabilele ce ncep cu
underscore au alta nsemntate fiind folosite n programarea orientat pe obiecte .

36

Python Curriculum

Fig. 2
Ceea ce nseamn ca numele variabilei ar trebui s nceap cu o liter, de obicei o
litera mic, literele mari sunt definite pentru funcii. Trebuie ales un nume sugestiv care
s indice ce conine variabila.
Spre exemplu variabila s ar trebui denumita stefanMare iar variabila st stefan_Sfant.
Prin aceste doua exemple vreau s subliniez ca exista doua stiluri de a crea variabile.
Primul stil este cel n care alternezi literele mici cu cele mari pentru a despari cuvintele,
iar cel de-al doilea stil se regsete prin separarea cuvintelor prin underscore. Fiecare
programator va trebui sa-si identifice propriul stil. E bine s existe o consistent a
variabilelor pentru a fi uor de citit codul.
In mod uzual o variabila globala (valida pentru tot programul i accesabila n fiecare
ramura a programului) va fi declarata la nceputul programului, imediat dup
comentariile ce descriu programul.

Fig. 3
In Fig. 3 se poate vedea cele doua stiluri de scriere a variabilelor. De asemenea
observam ca putem aplica la o variabila atribute sau metode de manipulare, aplicare
care va actiona asupra valorii stocate de variabila.

Capturarea user input


Python este capabil s captureze cuvintele introduse de la tastatur de ctre user. Prin
urmare acestea se pot utiliza ulterior similar cu o variabila definita de programator.
Urmtorul program va arata cum se poate realiza capturarea de caractere de la
tastatura.

37

Python Curriculum

# Salut Personalizat
# Demonstreaza user input
# Ion Studentul 1/13/03
Nume_Utilizator = raw_input("Salut. Cum te numesti? \n\n")
print "\n",Nume_Utilizator,"?\n"
print "Salut

" + Nume_Utilizator + "!"

raw_input("\n\nApasa <enter> pt a iesi.")

Fig. 1

In programul de mai sus se poate vedea ca variabila Nume_utilizator va captura ce


scrie utilizatorul de la tastatur. Odat capturata valoarea poate fi utilizata ca orice
variabila de tip sir de caractere. Astfel ea poate fi printata sau modificata.
Dup cum se poate vedea n programul de mai sus, vom utiliza comanda raw_input
pentru a captura user input. Tot mereu comanda raw_input va interpreta ce
captureaz ca fiind un ir de caractere. Deci, daca dorim s realiza o suma a doua
numere introduse de la tastatur folosind raw_input n mod direct fr a converti acele
siruri de caractere capturate in numere, programul va genera concatenarea celor doua
iruri de caractere, dup cum se poate vedea n Fig. 2.

38

Python Curriculum

Fig. 2
Din pacate adunarea celor doua variabile primulNr si, repspectiv, nrDoilea nu ne
returneaza 5, si asta datorita tipului de date sir de caractere. Prin urmare, trebuie sa
convertim aceste doua variabile pentru a putea lucra cu numere.
Pentru a converti un ir de caractere n numere va trebui s folosim una din funciile ce
se regsesc n sintaxele de mai jos:

Fig. 3
Sa discutam un pic despre sintaxele din IDLE ce se regsesc n Fig. 3.Primul pas este
s definim o variabila de tip ir de caractere. Aceasta poate fi convertita ntr-o valoare

39

Python Curriculum

float apelnd comanda float. Aceasta ia ca i parametru(argument) o variabila de tip


string sau integer. Un parametru este o valoare ce o punem intre parantezele unei
comenzi, iar comenzile se numesc de fapt funcii. Funciile le putem defini noi, dar
exista i funcii standard.
O alta funcie de conversie este str(x) unde x este o variabila ce susine un numr
(integer sau float).
Avem la dispoziie i funcia int(x) unde x este o variabil ce susine un ir de caractere.
Dar ce se ntmpl daca parametru de intrare nu respect regulile. Aa cum se poate
vedea n Fig. 4 , funcia float i funcia int sunt sensibile la un parametru ce este un ir
de caractere format din caractere non-numerice. n acest caz interpretorul va returna o
eroare indicnd ce e greit la aceast sintaxa.
Conversia unui numr float n float sau a unui numr integer n integer nu returneaz o
eroare, dar nu are nici un sens nici utilizarea acestei transformari.
Tot n Fig. 4 putem vedea ca funcia str() nu returneaz eroare n nici unul din cazuri.

Fig. 4

40

S-ar putea să vă placă și