Sunteți pe pagina 1din 45

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)
o Crearea de sisteme de aprare cu rachete (Lockheed Martin)
o Administrarea de liste de mail (Mailman)
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 face alegerile 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

SEDINTA 1 VARIABILE I OPERATORI DECIZIONALI


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. 10
In Fig.10 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. 11.

Fig. 11
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. 12
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. 13

Variabile
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.")

34

Python Curriculum

Fig. 14

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>>?
# Stefan cel Mare
# Demonstreaza lucrul cu variabile
# Ion Studentul 1/11/13

s = "Stefan cel Mare"


st = s+" i Sfant"
#redenumirea variabilei s
s = "Stefan CEL Mare"
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.")

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. 6

35

Python Curriculum

Fig. 15
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 .
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.

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.

36

Python Curriculum

Urmtorul program va arata cum se poate realiza capturarea de caractere de la


tastatura.
# 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. 16

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. 17.

37

Python Curriculum

Fig. 17
Ce introduce user-ul ar trebui verificat de cele mai multe ori. Spre exemplu ne ateptm
ca userul s introduc un numr . Acest lucru trebuie verificat. Acesta este urmtorul
lucru pe care l vom studia i anume manipularea de variabile de tip sir de caractere.

Manipularea irurilor de caractere


n urmtorul program o s nvam manipularea irurilor de caractere in vederea
verificarii informatiei stocate de acest sir de caractere. Putem afisa 2 ca fiind un sir de
caractere , deci avem nevoie de o metoda de verificare ce va indica ce contine un sir de
caractere. Aceste metode de manipulare a unui sir de carctere se aplica la finalul sirului
de caractere cu punct urmand structura de mai jos:
Sir_caractere.metoda_aplicata()
Iata si un exemplu de aplicare a unor metode de manipulare a sirurilor de carctere:

Fig . 18
Asa cum se poate observa in Fig.18 pot aplica o metoda de manipulare direct unui sir
de caractere sau unei variabile ce stocheaza un sir de caractere. Metoda de manipulare
upper() returneaza toate caracterele de tip litera cu litera mare, pe cand metoda de
manipulare lower() va returna un sir de caractere cu litera mica.

38

Python Curriculum

Un alt aspect important intalnit in programul urmator este introducerea variabilei de tip
boolean ce poate avea doar doua stri: True i False. Aceste stri se regsesc n
culoarea albastr i trebuie scrise ca atare (True sau False) fiind sensibile la diferente
de caractere mici sau mari (eng.case sensitive) dac le declaram manual.
Explicarea acestor metode dar si a variabilei de tip boolean o vom face pe baza unui
exemplu ce se regaseste in sectiunea urmatoare:

# Manipularea sir caractere


# Demonstreaza manipularea variabilelor ce contin un sir de caractere
# Ion Studentul 1/13/03
# Citat Presedinte IBM, Thomas Watson, in 1943
citat = "I think there is a world market for maybe five computers."
print "Citat original:"
print citat
print "\nIn litere mari:"
print citat.upper()
print "\nIn litere mici:"
print citat.lower()
print "\nCa titul:"
print citat.title()
print "\nCu o mica schimbare:"
print citat.replace("five", "millions of")
print "\nCitatul original este inca :"
print citat
print "\nVerificare daca variabila este un sir de caractere format numai \
din numere:"
print citat.isdigit()
print "\nVerificare daca variabila este sir de caractere format din \
caractere alpha:"
print citat.isalpha()
citat_modificat= citat.replace(" ","")
citat_modificat= citat.replace(".","")
print "\nVerificare daca variabila este sir de caractere format din caractere alpha:"
print citat_modificat.isalpha()
raw_input("\n\nApasa <enter> pt a iesi.")

Mai jos regsim i rularea programului (Fig . 19).

39

Python Curriculum

Fig. 19

Sa analizam ce a rezultat din urma rulrii i ce face fiecare sintaxa.


Putem s observam cu uurina ca nume_variabila.upper() va avea ca rezultat toate
caracterele cu litere mari asa cum am mentionat si mai devreme.
Similar nume_variabila.lower() va transforma toate caracterele n litere mici.
n ceea ce privete afiarea ca titlu folosind metoda de manipulare .title() vom observa
ca fiecare cuvnt din irul de caractere va fi modificat astfel incat primul caracter s aib
liter mare, apoi celelalte caractere s fie litere mici.
Bineneles ca avem la dispoziie opiunea de a modifica textul, i cu ajutorul expresiei
variabila.replace(valoare de nlocuit, valoare ce nlocuiete) putem s modificam ce
dorim, aa cum se poate vedea si n Fig.19.

40

Python Curriculum

Sa analizam un pic cele patru linii de mai jos extrase din program:
print "\nCu o mica schimbare:"
print citat.replace("five", "millions of")
print "\nCitatul original este inca :"
print citat

Char daca am aplicat metoda de manipulare .replace(), vedem ca variabila citat nu s-a
modificat deoarece valoarea ce rezulta din acesta expresie a fost doar afiata, nefiind
atribuita unei variabile care sa stocheze noau informatie. Daca ne doream s schimbam
variabila citat ar fi trebuit s avem o sintaxa de genul:
citat = citat.replace("five", "millions of")

Reamintim ca variabila de tip boolean ce poate avea doar doua stri: True i False.
Aceste stri se regsesc n culoarea albastr i trebuie scrise ca atare (True sau False)
fiind sensibile la diferente de caractere mici sau mari (eng.case sensitive) dac le
declaram manual. Metodele de manipulare a sirurilor .isdigit(), .isalpha() , islower()
.isupper(), .isspace(), isalnum(), .istitle() returneaza o variabila boolean.
Sintaxa citat.isdigit() va returna True daca toate caracterele sunt formate doar din
numere, i False daca cel puin un caracter este diferit de un numr. Similar va fi
rezultatul sintaxei citat.isalpha(), diferena o consta n faptul c verificarea o va face
pentru caratere alpha.(litere). Spatiul este considerat un caracter ce nu este numar sau
litera. Prin urmare un sir de caractere ce va avea stocat o propozitie cu spatiu sau
semne de punctuatie va returna False la verificarea sirului cu ajutorul metodei de
manipulare .isalpha().
Deci ambele vor trebui s returneze False deoarece irul nu este format doar din
numere i nu este format doar din litere (deoarece are spaiu i . ).
Astfel Programul propune s nlocuim caracterul spaiu cu nimic(deci tergere) i
caracterul punct cu nimic(deci tergere).
citat_modificat= citat.replace(" ","")
citat_modificat= citat.replace(".","")

Din pcate ceva nu merge bine deoarece variabila citat_modificat rezulta tot False.
Care credei c este greeala?
Pai citat_modificat este rezultatul aplicarii metodei de manipulare replace() pe baza
sirului original ce nseamn ca va rmne doar ultima forma de inlocuire. Astfel, pentru
a funciona, trebuie s modificam n a doua sintaxa variabila cruia i se va aplica
metoda replice din citat n citat_modificat, variabila ce a fost modificata anterior
nlocuindu-se spaiu cu punct. n forma actuala rezultatul afirii cu ajutorul comenzii
print a variabilei modificat este:

41

Python Curriculum

I think there is a world market for maybe five computers

Iat astfel cum ar trebui s modificam pentru a inlocui:


citat_modificat= citat.replace(" ","")
citat_modificat= citat_modificat.replace(".","")

Rezultatul va fi acela ateptat:


Verificare daca variabila este sir de caractere format din caractere alpha:
True

Similar i n cazul n care folosim metoda variabila.isdigit(); va returna True doar dac
toate caracterele irului de caractere memorat de variabila este format exclusiv din
numere.
Mai jos regasim alte metode de manipulare a sirurilor:
.islower() - verifica daca toate caracterele sirului de tip litera sunt mici; ignora alte
caractere neafectand rezultatul returnat
.isupper() - verifica daca toate caracterele sirului de tip litera sunt mari; ignora alte
caractere neafectand rezultatul returnat
.isspace() - verifica daca toate caracterele sirului sunt de tip space exclusiv. Orice alt
caracter exceptand space ce face parte din sir va genera un False.
.isalnum() - verifica daca toate caracterele sirului sunt de tip litera sau numar exclusiv.
Orice alt caracter exceptand litera sau numar ce face parte din sir va genera un False.
.istitle() - verifica daca toate cuvintele sirului incep cu litere mari; ignora alte caractere
neafectand rezultatul returnat
Deci, avem metode prin care putem sa demonstram ce am captat de la utilizator
verificand daca acel sir de caractere este explicit ceea ce noi cautam. Totui nu putem
s facem operaii matematice deoarece este un ir de caractere. Prin urmare avem
nevoie de conversie.
Din pcate, dac noi capturam caractere de la tastatura, e greu sa coninutul variabilei
folosite ca parametru, dar depinde de noi s verificm existenta irului de caractere
nainte de a fi convertit.
Pentru a converti un ir de caractere n numere va trebui s folosim una din funciile ce
se regsesc n sintaxele de mai jos:

42

Python Curriculum

Fig. 20
Sa discutam un pic despre sintaxele din IDLE ce se regsesc n Fig. 20.
Primul pas este s definim o variabila de tip ir de caractere. Aceasta poate fi convertita
ntr-o valoare 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. 21 , 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. 21 putem vedea ca funcia str() nu returneaz eroare n nici unul din cazuri.

43

Python Curriculum

Fig. 21

44