100% au considerat acest document util (4 voturi)
591 vizualizări

Introducere În Python

Documentul prezintă o introducere în limbajul de programare Python. Este prezentat modul de instalare a Python, cum se rulează programe simple mono-liniare și cum se utilizează variabilele și comentariile. De asemenea, sunt explicate operațiile matematice de bază în Python.

Încărcat de

Bogdan Pfa
Drepturi de autor
© © All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca DOCX, PDF, TXT sau citiți online pe Scribd
100% au considerat acest document util (4 voturi)
591 vizualizări

Introducere În Python

Documentul prezintă o introducere în limbajul de programare Python. Este prezentat modul de instalare a Python, cum se rulează programe simple mono-liniare și cum se utilizează variabilele și comentariile. De asemenea, sunt explicate operațiile matematice de bază în Python.

Încărcat de

Bogdan Pfa
Drepturi de autor
© © All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca DOCX, PDF, TXT sau citiți online pe Scribd
Sunteți pe pagina 1/ 33

Introducere în PYTHON

Instalarea Python
Ce este Python?
Python este un limbaj de programare interpretat. Pentru cei care nu știu, un limbaj de programare
este ceea ce scrii pentru a-i spune unui calculator ce are de fă cut. Oricum, computerul nu citește
limbajul in mod direct - exista sute de limbaje de programare si nu ar putea sa le înțeleagă pe toate.
Deci, câ nd cineva scrie un program, îl va scrie in limbajul selectat si apoi îl va compila - aceasta
înseamnă transformarea într-o mulțime de 0 si de 1, pe care computerul le poate înțelege rapid si
ușor. Diversele programele pe care le poți cumpă ra pentru calculatorul tă u sunt deja compilate
pentru Windows - daca încerci sa deschizi un astfel de program cu Notepad sau Wordpad, vei vedea
doar o mulțime de caractere ciudate.
Un program care este compilat pentru Windows nu va funcționa pe un alt sistem de operare.
Diferența dintre Python si astfel de programe este ca acest limbaj nu este niciodată compilat in
totalitate - la rulare, fiecare instrucțiune este transformata in serii de 0 si 1 pe care computerul tă u
le poate înțelege. In plus, totul este fă cut pe loc - codul este executat pe mă sura ce rulezi programul.
Daca ai ieși din program si ai reveni in alta zi, biții ar fi din nou compilați. Ti se pare a fi pierdere de
timp? Poate, dar asta înseamnă ca un program Python poate rula pe diferite sisteme de operare,
fă ră a necesita ajustă ri. Ai putea trimite programul unui prieten, care utilizează un alt tip de
computer. Sau ai putea posta programul pe Internet, de unde sa fie descă rcat de persoane lucrâ nd
pe calculatoare diferite. Acesta este miracolul unui limbaj de programare interpretat - este un
limbaj pe care orice sistem îl poate INTELEGE.
Cum se instalează Python
1. Mai întâ i descarcă Python urmâ nd acest link ( http://www.python.org/download/).  Pentru
acest tutorial a fost utilizata versiunea 2.6.2.
2. Executa fișierul downloadat si urmează comenzile.
OK! Sa speram ca totul a mers bine! Acum, pentru a testa daca funcționează , tastează urmă toarea
instrucțiune in fereastra de comenzi - daca lucrezi pe Windows, caută Python in Programs,
accesează  Python (command line), apoi rulează urmă toarea comanda:
print "Hello World!"
Încearcă , vezi ce se întâ mpla. Pentru a închide fereastra, tastează 'quit()', apoi apasă Enter.
'Programe' foarte simple
Introducere
OK! Am instalat Python, si acum? Pai, sa programam!
Si este ușor (cel puțin pentru moment). Python face sa fie ușor de rulat linii singulare de cod -
programe mono-liniare. Sa încercam!
Deschidem IDLE
Mergi in meniul de start, gă sește Python si rulează programul denumit 'IDLE' (Vine de la Integrated
Development Environment - Mediu Integrat de Dezvoltare).

1
Introducere în PYTHON

Acum te afli in mediul IDLE. Acesta este locul in care iți vei petrece majoritatea timpului. Aici poți
deschide o noua fereastra pentru a scrie un program sau poți pierde vremea cu linii singulare de
cod, ceea ce vom si face. Tastează urmă toarele si apasă Enter:
>>> print "Hello World!"
Ce s-a întâ mplat? Tocmai ai creat un program care afișează cuvintele 'Hello, World'. Mediul IDLE in
care te afli compilează imediat orice ai tastat. Este extrem de util pentru testare, de exemplu la
definirea variabilelor, sau pentru a verifica daca o anumita linie de cod funcționează .
Matematica in Python
Cu Python poți efectua anumite operații matematice, cum ar fi:
- Adunare
>>> 1 + 1
2
>>> 20+80
100
>>> 18294+449566
467860
-Scă dere
>>> 6-5
1
- Înmulțire
>>> 2*5
10
- Ridicare la putere
>>> 5**2
25
- Împă rțire
>>> 21/3
7
>>> 23/3
7
>>> 23.0/3.0
7.6666�

2
Introducere în PYTHON

- Restul împă rțirii


>>> 23%3
2
>>> 49%10
9
In plus, poți afișa sume si variabile printr-un singur apel al funcției PRINT, utilizâ nd virgula pentru
a separa diferitele secțiuni:
>>> print "un kilobyte este 2^10 bytes, sau", 2**10, "bytes"
un kilobyte este 2^10 bytes, sau 1024 bytes
In tabelul de mai jos poți vedea toți operatorii Python prezentați mai sus.

Operator Nume Exemplu Rezultat


+ Adunare 4+5 9
- Scă dere 8-5 3
* Înmulțire 4*5 20
/ Împă rțire 19/3 6
% Restul împă rțirii 19%3 5
** Ridicare la putere 2**4 16

Iți amintești de ordinea operațiilor din matematica? Se aplica si in Python. Iată , ca sa iți amintești:

1. paranteze()
2. ridicare la putere **
3. înmulțire *, împă rțire \, si restul împă rțirii %
4. adunare + si scă dere -

Ordinea operațiilor

Iată câ teva exemple pe care le-ai putea încerca:

>>> 1 + 2 * 3
7
>>> (1 + 2) * 3
9

In primul exemplu, computerul calculează mai întâ i 2 * 3, apoi adaugă 1. Aceasta, deoarece
înmulțirea este efectuata înaintea adună rii.

3
Introducere în PYTHON

In cel de-al doilea exemplu, computerul calculează mai întâ i 1 + 2, apoi înmulțește cu 3. Aceasta, din
cauza parantezelor care încadrează adunarea.

Mai amintește-ti si ca in matematica se calculează de la stâ nga la dreapta, exceptâ nd cazul in care
exista paranteze. Parantezele interioare sunt calculate primele. Privește urmă toarele exemple:

>>> 4 - 40 - 3
-39
>>> 4 - (40 - 3)
-33

In primul exemplu, se calculează întâ i 4 -40, apoi - 3.

In cel de-al doilea exemplu, se calculează mai întâ i 40 - 3 si apoi se scade din 4.

Comentarii

Ultimul lucru pe care trebuie sa-l cunoști pentru a putea trece la programe cu mai multe linii de cod
sunt comentariile. Tastează urmă toarele (si da, rezultatul execuției este afișat):

>>> #Iată un comentariu

>>>

Un comentariu este o porțiune de cod care nu este rulata. In Python, creezi un comentariu punâ nd
caracterul # înainte. Acesta va ascunde tot ce se afla după el in acea linie si nimic înainte. Deci ai
putea tasta urmă toarele:

>>> print "mâ ncarea e foarte buna" #primul comentariu

mâ ncarea e foarte buna

>>># print "mâ ncarea e foarte buna"

(nu se întâ mpla nimic deoarece codul se afla după #)

>>> print "mâ ncarea e foarte buna" primul comentariu

(vei primi un mesaj de eroare deoarece nu ai folosit # pentru comentariu

Comentariile sunt importante pentru a adaugă informațiile necesare altui programator pentru a
înțelege codul, dar nu influențează cu nimic computerul. In plus, poți utiliza comentariile pentru a
dezactiva anumite porțiuni de cod, urmâ nd sa le reactivezi mai tâ rziu.

Variabile si scripturi

Introducere

Deci, putem executa programe monoliniare. Si? Vrei sa trimiți programele altor oameni, pentru a le
putea utiliza, fă ră sa știe cum sa le scrie.

4
Introducere în PYTHON

Editare in Notepad

Scrierea programelor din Python într-un fișier, este FOARTE ușoara. Programele Python sunt
simple documente text - le poți deschide in Notepad pentru a le observa. Deci, deschide Notepad si
tastează urmă toarele:

#Un program simplu.


print "Mary had a little lamb,"
print "it's fleece was white as snow;"
print "and everywhere that Mary went",
print "her lamb was sure to go."

Pă strează totul la fel, inclusiv poziționarea virgulelor. Salvează fișierul ca fiind 'mary.py' - si
asigura-te ca Notepad nu adaugă extensia .txt. Dezactivează 'Hide known file extensions' in
Windows Explorer, daca iți va fi mai ușor.

Utilizarea mediului IDLE

Acum, deschide programul Python IDLE (ar trebui sa fie in meniul de start). Click File > Open,
gă sește mary.py si deschide-l. Daca nu poți gă si mary.py, setează dialogul de deschidere la 'Files
of type: All Files (*)'. Se va deschide o noua fereastra, prezentâ nd programul pe care tocmai l-ai
scris. Pentru a rula programul, click Run>Run Module (sau doar apasă  F5). Programul va rula in
ecranul principal Python (Denumit Python Shell) si va afișa urmă toarele:

Mary had a little lamb,


it's fleece was white as snow;
and everywhere that Mary went her lamb was sure to go.

Mai poți utiliza si IDLE pentru a crea programe Python, așa cum ai fă cut in Notepad. Pur si simplu
accesează  File > New Window. De acum vei scrie toate programele in Python IDLE - am folosit
Notepad doar ca demonstrație pentru a iți arata ca un fișier .py este doar un simplu fișier text, pe
care oricine îl poate vedea.

Exista câ teva aspecte de menționat:

 Mai întâ i, comentariul nu a fost afișat. Aceasta este bine, deoarece, amintește-ti -
comentariile nu sunt compilate. (încearcă sa compilezi după îndepă rtarea # - va rezulta o
învă lmă șeala)
 Apoi, a 3-a si a 4-a linie au fost concatenate, deoarece exista o virgula la sfâ rșitul celei de-a
treia linii de cod. Aceasta oprește programul din a crea o noua linie pe ecran atunci câ nd
afișează textul.

Variabile

Acum sa începem introducerea variabilelor. Variabilele stochează o valoare care poate fi analizata
sau schimbata ulterior. Pentru a crea un program care utilizează variabile, deschide IDLE, apoi
accesează  File>New Window - apare o noua fereastra in care este ușor sa editezi programe.
Tastează urmă toarele (sau doar copy si paste - însă citește cu multa atenție si compara codul cu
rezultatul oferit de că tre program):

5
Introducere în PYTHON

#utilizarea variabilelor
print "Acest program este un test pentru variabile"
v=1
print "Valoarea lui v este acum", v
v=v+1
print "v este incrementat cu 1, luâ nd valoarea", v
v = 51
print "v poate retine orice valoare numerica"
print "de exemplu, v este acum", v
print "v înmulțit cu 5 este", v*5
print "dar valoare lui v ră mâ ne", v
print "pentru a retine aceasta valoare in, trebuie sa scrii v = v * 5"
v=v*5
print "iată , v este acum", v, "si nu", v / 5

Ș iruri de caractere

După cum poți observa, variabilele stochează valori pe care le poți schimba oricâ nd si le utiliza mai
tâ rziu. Poți însă atașa nu numai numere, ci si text. O variabila care suporta text se numește
string. Încearcă acest program:

#variabile de tip string si concatenarea lor


word1 = "Buna"
word2 = "dimineața"
word3 = "si ție!"
print word1, word2
sentence = word1 + " " + word2 + " " +word3
print sentence

Rezultatul va fi:

Buna dimineața
Buna dimineața si ție!

După cum poți vedea, variabilele de mai sus rețin text. Denumirile variabilelor pot conține mai mult
decâ t o litera - aici avem word1, word2, and word3. După cum mai poți observa, șirurile de
caractere pot fi unite (concatenate) pentru a crea cuvinte sau propoziții mai lungi. Oricum,
concatenarea nu adaugă spatii intre cuvinte - de aceea trebuie sa adaugi tu spatiile punâ nd " " intre
elemente.

Bucle si instrucțiuni condiționale

Introducere

(Lecția finala înainte de a interacționa cu utilizatorii. Nu-i așa ca ești neră bdă tor?)

Imaginează -ti ca ai avea nevoie ca un program sa execute ceva de 20 de ori. Ce ai face? Ai copia si
atașa codul de 20 de ori si ai avea un program practic necitibil, ca sa nu menționez încetineala si

6
Introducere în PYTHON

inutilitatea. Sau i-ai putea spune computerului sa repete o porțiune de cod intre punctul A si
punctul B pana câ nd trebuie sa se oprească . Aceasta este o bucla.

Bucla 'while'

Urmă toarele sunt exemple de bucle de tip 'while':

a=0
while a < 10:
a=a+1
print a

Cum funcționează acest program? Iată "traducerea" sa in romana:

'a' este 0
Cat timp 'a' este mai mic decâ t 10, executa urmă toarele:
Mă rește valoarea 'a' cu 1.
Afișează valoarea 'a'.

Ce face? Sa vedem ce ar 'gâ ndi' computerul câ nd este in bucla 'while':

#UITA-TE REPEDE PE URMATORUL COD


#(Arata lung, dar este foarte simplu)
Este ‘a' mai mic decâ t 10? DA (este 0)
Mă rește 'a' cu o unitate (este 1)
Afișează valoarea lui 'a' (1)

Este ‘a' mai mic decâ t 10? DA (este 1)


Mă rește 'a' cu o unitate (este 2)
Afișează valoarea lui 'a' (2)

Este ‘a' mai mic decâ t 10? DA (este 2)


Mă rește 'a' cu o unitate (este 3)
Afișează valoarea lui 'a' (3)

Este ‘a' mai mic decâ t 10? DA (este 3)


Mă rește 'a' cu o unitate (este 4)
Afișează valoarea lui 'a' (4)

Este ‘a' mai mic decâ t 10? DA (este 4)


Mă rește 'a' cu o unitate (este 5)
Afișează valoarea lui 'a' (5)

Este ‘a' mai mic decâ t 10? DA (este 5)


Mă rește 'a' cu o unitate (este 6)
Afișează valoarea lui 'a' (6)

Este ‘a' mai mic decâ t 10? DA (este 6)


Mă rește 'a' cu o unitate (este 7)
Afișează valoarea lui 'a' (7)

7
Introducere în PYTHON

Este ‘a' mai mic decâ t 10? DA (este 7)


Mă rește 'a' cu o unitate (este 8)
Afișează valoarea lui 'a' (8)

Este ‘a' mai mic decâ t 10? DA (este 8)


Mă rește 'a' cu o unitate (este 9)
Afișează valoarea lui 'a' (9)

Este ‘a' mai mic decâ t 10? DA (este 9)


Mă rește 'a' cu o unitate (este 10)
Afișează valoarea lui 'a' (10)

Este ‘a' mai mic decâ t 10? NU (este 10, deci nu e mai mic decâ t 10)
Ieși din bucla
Nu a mai ră mas cod de executat, deci ieși din program

Pe scurt, încearcă sa gâ ndești astfel atunci câ nd scrii bucle 'while':

while {condiție pentru care bucla continua}:


{codul din interiorul buclei}
{indenteaza-l, de obicei cu 4 spatii}
{codul de aici nu face parte din bucla}
{deoarece nu este indentat }

Iată si un alt exemplu:

#EXEMPLU
#Scrie acest cod si executa-l
x = 10
while x != 0:
print x
x=x-1
print "wow, am decrementat variabila x si acum are valoarea", x
print "Am ieșit din bucla."

Amintește-ti, pentru a crea un program, deschizi IDLE, accesezi File > New Window, tastezi
programul in noua fereastra, apoi apeși F5 pentru a rula.

Expresii Booleene

Ce scrii in zona marcata {condiție pentru care bucla continua}? Ră spunsul este o expresie booleana.

Poftim? Un concept uitat pentru non-matematicienii de aici. Nu contează , o expresie booleana


semnifica doar o întrebare la care se poate ră spunde cu TRUE (adevă rat) sau FALSE (fals). De
exemplu, daca vrei sa spui ca vâ rsta ta este aceeași cu a persoanei de lâ ngă tine, ai scrie:

Vâ rsta mea == vâ rsta persoanei de lâ ngă mine

Si afirmația ar fi TRUE. Daca ai fi mai tâ nă r decâ t respectiva persoana, ai spune:

Vâ rsta mea < vâ rsta persoanei de lâ ngă mine


8
Introducere în PYTHON

Si afirmația ar fi TRUE. Daca tu ai fi spus urmă toarele si persoana de lâ ngă tine ar fi mai tâ nă ră
decâ t tine:

Vâ rsta mea < vâ rsta persoanei de lâ ngă mine

Afirmația ar fi FALSE - adevă rul este exact contrariul. Iată cum gâ ndește o bucla - daca expresia este
true, continua. Daca este false, nu mai continua. Ț inâ nd cont de aceasta, sa privim operatorii
(simboluri care reprezintă o acțiune) care sunt implicați in expresii booleene:

Operatori booleeni

< mai mic


<= mai mic sau egal cu
> mai mare
>= mai mare sau egal cu
!= nu este egal cu
<> nu este egal cu (alternativ)
== egal cu

Nu confunda '=' cu '=='. Operatorul '=' efectuează o atribuire (obiectul din stâ nga ia valoarea
obiectului din dreapta), in timp ce operatorul '==' verifica daca obiectul din stâ nga este egal cu cel
din dreapta si returnează true or false.

Instrucțiuni condiționale

OK! Am acoperit (sper) buclele 'while'. Acum sa analizam ceva diferit - instrucțiunile condiționale.

Instrucțiunile condiționale reprezintă secțiuni de cod care sunt rulate daca sunt îndeplinite anumite
condiții. Sunt similare buclei 'while' pe care tocmai ai scris-o, care rulează doar câ nd x nu este egal
cu 0, cu diferența ca instrucțiunile condiționale sunt rulate doar o singura data. Cea mai întâ lnita
instrucțiune de acest tip (in orice limbaj de programare) este 'if'. Iată cum acționează :

if {condiții ce trebuie îndeplinite }:


{executa asta}
{si asta}
{si asta}
{acest cod este executat oricum }
{pentru ca nu este indentat }

Iată si un exemplu:

#EXEMPLUL 1
y=1
if y == 1:
print "y este egal 1, doar verificam"

#EXEMPLUL 2
print "Vom afișa numerele pare pana la 20"
n=1

9
Introducere în PYTHON

while n <= 20:


if n % 2 == 0:
print n
n=n+1
print "am terminat."

Exemplul 2 este puțin mai complicat. Bucla while incrementează valoarea lui n de la 1 la 20, in timp
ce instrucțiunea if verifica daca n este par. Amintește-ti ca operatorul % calculează restul împă rțirii.
In acest caz, daca este îndeplinita condiția n % 2 = 0, înseamnă ca n este par, deci valoarea lui va fi
afișata.

'else' si 'elif' - Câ nd condiția nu este îndeplinita

Sunt multe moduri in care poți utiliza instrucțiunea 'if'. Daca vrei sa specifici o acțiune alternativa
pentru cazul in care condiția nu este îndeplinita, poți utiliza else si elif. ‘else' spune pur si simplu
computerului ca sa facă in cazul in care condiția este false. De exemplu, citește urmă toarele:

a=1
if a > 5:
print "Asta nu trebuie sa se întâ mple."
else:
print "Asta trebuie sa se întâ mple."

'a' nu este mai mare decâ t cinci, deci va fi executat codul din ramura 'else'

'elif' este doar o modalitate mai scurta de a spune 'else if'. De exemplu:

z=4
if z > 70:
print "Ceva ră u s-a întâ mplat "
elif z < 7:
print "Asta e normal "

Instrucțiunea 'if' împreuna cu 'else' si 'elif' urmează acest tipar:

if {condiție 1}:
{executa acest cod}
elif {condiție 2}:
{executa acest cod}
elif {condiție 3}:
{executa acest cod}
else:
{executa acest cod}

'Ceea ce trebuie sa reții este ca poți avea oricâ te declarații elif, dar o singura instrucțiune else, care
trebuie pusa la sfâ rșit.

Un alt lucru foarte important este ca trebuie sa închei cu : (doua puncte) fiecare linie ce conține if,
elif, else sau while.

10
Introducere în PYTHON

Indentarea codului

Indentarea codului este o practica întâ lnita in mai toate limbajele de programare, dar in Python este
o necesitate. Aceasta înseamnă ca daca o bucla 'while' conține 5 linii de cod, trebuie sa pui un
anumit numă r de spatii la începutul fiecă rei dintre cele cinci linii. Iată un exemplu:

a = 10
while a > 0:
print a
if a > 5:
print "a este mare!"
elif a % 2 != 0:
print "a este impar"
print "si mai mic sau egal decâ t 5"
else:
print "acest numă r nu este mai mare decâ t 5"
print "si nu este impar"
a=a-1
print "am decrementat a cu o unitate"
print "daca este mai mare ca 0, repetam bucla"
print "se pare ca a nu este mai mare ca 0"
print "bucla s-a terminat!"

Observa cele trei nivele de indentare:

 Fiecare linie din primul nivel începe fă ră spatii. Este codul principal si va fi executat mereu.
 Fiecare linie din cel de-al doilea nivel începe cu patru spatii. Câ nd exista un 'if' sau o bucla la
primul nivel, tot ce se afla la al doilea nivel va fi considerat un singur bloc de cod, pana câ nd
începe o noua linie din primul nivel.
 Fiecare linie din cel de-al treilea nivel începe cu 8 spatii. s.a.m.d

In afara de while, mai exista un tip de bucla denumita for, despre care vei putea citi in urmă toarele
tutoriale.

Introducere in Python - Partea a II-a. Funcții.

Funcții
Introducere
Ce sunt funcțiile? In esența, funcțiile sunt secțiuni de cod ce executa o anumita sarcina si pe care le
poți incorpora in propriile programe mai mari. După ce ai creat o funcție, o poți utiliza oricâ nd,
oriunde. Aceasta te scutește de timpul si de efortul de a-i spune iar si iar computerului ce sa facă de
fiecare data câ nd executa o sarcina obișnuita, de exemplu preluarea inputului de la tastatura.
Utilizarea unei funcții
Python are o mulțime de funcții predefinite pe care le poți utiliza imediat, prin simpla apelare a
acestora. Apelarea înseamnă transmiterea unor parametri, pe care funcția ii va folosi pentru a
returna un rezultat. Iată forma generala pe care o are apelarea unei funcții:

11
Introducere în PYTHON

nume_functie(parametri)
Vezi? Ușor.
 nume_functie identifica funcția pe care vrei sa o utilizezi (de exemplu, funcția raw_input,
care va fi prima funcție Python pe care o vom analiza).
 Parametrii sunt valorile pe care le trimiți funcției pentru a-i spune ce ar trebui sa facă si
cum ... de exemplu, daca o funcție înmulțește un numă r cu 5 si valoarea parametrului este
70, funcția va executa 70x5.
Parametri si valori returnate - comunicarea cu funcțiile
Sa presupunem ca avem un program ce realizează înmulțirea cu 5, dar cum arata asta in limbaj
Python? Programul trebuie sa vadă rezultatul, sa vadă ce reprezintă 70x5 sau daca exista vreo
problema undeva (de exemplu daca parametrul furnizat este o litera in loc de un numă r). Deci, cum
lucrează o funcție?
In esența, câ nd un computer rulează o funcție, nu vede numele acesteia, ci rezultatul a ceea ce a
executat funcția. Variabilele funcționează la fel - computerul nu vede numele variabilei, ci valoarea
acesteia. Sa denumim aceasta funcție care înmulțește un numă r cu 5 - multiply(). Deci, daca ai
tastat:
a = multiply(70)
Computerul vede de fapt:
a = 350
Observație: Nu te obosi sa testezi acest cod - pentru a funcționa, trebuie mai întâ i sa definești
funcția multiply().
Funcția va fi executata, apoi va returna un numă r in programul principal, bazat pe parametrii
oferiți.
Acum sa încercam apelul unei funcții predefinite si sa vedem cum lucrează . Funcția respectiva este
denumita raw_input si ii solicita utilizatorului sa tasteze ceva, apoi transforma datele introduse
într-un sir de caractere (string). Încearcă te rog codul de mai jos:
# aceasta linie retine datele introduse in variabila a
a = raw_input("Scrie un text, ce va fi afișat din nou pe ecran:")
# afișează conținutul variabilei a
print a
Sa spunem ca in programul de mai sus ai tastat "Hello". Pentru computer, acest program ar arata
astfel:
a = "Hello"
print "Hello"

12
Introducere în PYTHON

Amintește-ti, o variabila este doar o valoare stocata. Pentru computer, variabila "a" nu arata ca un
"a" - vede valoarea stocata in interiorul sau. Funcțiile sunt similare - programul principal (acesta
este cel care rulează funcția) va vedea doar valorile primite ca urmare a apelă rii.
Un calculator
Sa scriem un alt program care va acționa ca un calculator. De data aceasta vom face ceva mai
aventuros. Va exista un meniu care te va întreba daca dorești sa înmulțești doua numere, sa le
aduni, sa le împarți sau sa le scazi. Exista o singura problema - funcția raw_input returnează un
string, iar noi avem nevoie de numă rul 1, nu de litera 1 (si da, in Python este o diferența).
Din fericire, avem la dispoziție funcția input care returnează ce ai tastat, dar de data aceasta ca
numă r. Daca ai tastat un numă r întreg, ceea ce rezulta este un numă r întreg. Si daca scrii acel numă r
într-o variabila, variabila va fi de tip integer, ceea ce înseamnă ca o poți utiliza in operații
aritmetice.
Acum, sa cream acest calculator. Ne dorim un meniu care este afișat de fiecare data câ nd terminam
de adunat, scă zut, etc. Cu alte cuvinte, sa execute o bucla continua.
Sa scriem asta într-un limbaj pe înțelesul tuturor:
INCEPE PROGRAMUL
afișează mesaj de început

in timp ce programul rulează , executa:


#Afișează operațiile aritmetice permise
afișează Opțiunea 1 - adunare
afișează Opțiunea 2 - scă dere
afișează Opțiunea 3 - înmulțire
afișează Opțiunea 4 - împă rțire
afișează Opțiunea 5 - ieșire din program

citește opțiunea aleasa


daca este opțiunea 1:
citește primul numă r
citește cel de-al doilea numă r
aduna numerele
afișează rezultatul
daca este opțiunea 2:
citește primul numă r
13
Introducere în PYTHON

citește cel de-al doilea numă r


efectuează scă derea
afișează rezultatul
daca este opțiunea 3:
citește primul numă r
citește cel de-al doilea numă r
înmulțește-le
afișează rezultatul
daca este opțiunea 4:
citește primul numă r
citește cel de-al doilea numă r
efectuează împă rțirea
afișează rezultatul
daca este opțiunea 5:
ieșire din bucla
afișează un mesaj de ieșire
TERMINA PROGRAMUL
Acum sa ii dam o forma pe care o poate înțelege Python:
#program calculator

# variabila loop indica programului daca sa execute bucla sau nu


# 1 înseamnă executa bucla, orice alta valoare înseamnă ieșire din bucla

loop = 1

# aceasta variabila retine opțiunea aleasa de utilizator

choice = 0

while loop == 1:
#afișează opțiunile
14
Introducere în PYTHON

print "Bine ai venit la calculator.py"

print "Opțiunile tale sunt:"


print " "
print "1) Adunare"
print "2) Scă dere"
print "3) Înmulțire"
print "4) Împă rțire"
print "5) Ieșire din calculator.py"
print " "

choice = input("Alege opțiunea dorita: ")


if choice == 1:
add1 = input("Aduna asta: ")
add2 = input("cu asta: ")
print add1, "+", add2, "=", add1 + add2
elif choice == 2:
sub2 = input("Scade asta: ")
sub1 = input("din asta: ")
print sub1, "-", sub2, "=", sub1 - sub2
elif choice == 3:
mul1 = input("Înmulțește asta: ")
mul2 = input("cu asta: ")
print mul1, "*", mul2, "=", mul1 * mul2
elif choice == 4:
div1 = input("Împarte asta: ")
div2 = input("la asta: ")
print div1, "/", div2, "=", div1 / div2
elif choice == 5:
loop = 0
print "Iți mulțumim ca ai utilizat calculator.py!"
15
Introducere în PYTHON

Este un program impresionant! Copiază asta in Python IDLE, salvează codul cu numele de
'calculator.py' si rulează -l (F5). Joaca-te puțin - încearcă -i toate opțiunile, introducâ nd numere
întregi sau raționale (in Python, zecimalele sunt delimitate prin punct(.), cunoscut in programare ca
floating point). Încearcă sa introduci text si vei vedea cum programul nu va mai rula (aceasta
problema se poate rezolva prin validarea datelor si erori, la care ne vom referi mai tâ rziu.)
Definirea propriilor funcții

Este bine sa utilizezi funcțiile altora, dar ce-ar fi sa-ti scrii propriile funcții, pentru a economisi timp
si poate pentru a le utiliza in alte programe? Aici intra in scena operatorul def (Un operator este
ceva ce ii spune programului Python ce sa facă , de ex. operatorul +ii spune sa adune, operatorul if ii
spune sa execute ceva daca sunt îndeplinite anumite condiții.)

Iată cum funcționează operatorul def:

def nume_functie(parametru_1,parametru_2):
{acesta este codul funcției}
{si mai mult cod}
{si mai mult cod}
return {valoare ce trebuie returnata in programul principal}
{cod ce nu face parte din funcție}
{pentru ca nu este indentat}
# nu uita sa pui ":" la sfâ rșitul liniei ce începe cu 'def'

nume_functie reprezintă denumirea funcției, fiind urmat de codul funcției, care este indentat
începâ nd cu urmă toarea linie (ne vom ocupa mai tâ rziu de parametru_1 si parametru_2, acum
imaginează -ti ca nu se afla nimic intre paranteze).

Funcțiile rulează complet independent de programul principal. Iți amintești ca am spus ca atunci
câ nd computerul apelează o funcție, nu vede funcția, ci valoarea returnata de aceasta? O funcție este
asemeni unui program in miniatura că ruia ii sunt transmiși niște parametri - ii rulează singur si
apoi returnează o valoare. Programul principal vede doar valoarea returnata. Daca acea funcție ar fi
zburat pana la luna si înapoi si la sfâ rșit ar avea:

return "Hello"

atunci tot ceea ce ar vedea programul ar fi string-ul "Hello".

Deoarece este un program distinct, o funcție nu vede niciuna dintre variabilele aflate in programul
principal si programul principal nu vede vreuna din variabilele definite in cadrul funcției. De
exemplu, iată o funcție care afișează cuvâ ntul "Hello" pe ecran si apoi returnează valoarea "1234":

# Mai jos este definita funcția


def Hello():
print "Hello"
return 1234

# Iată apelul funcției


print Hello()

16
Introducere în PYTHON

Gâ ndește-te la ultima linie de cod de mai sus. Ce am fă cut? Introdu codul in IDLE (poți sari peste
comentarii) si vezi ce face. Rezultatul arata astfel:

Hello
1234

Deci, ce s-a întâ mplat?


 1. Câ nd a fost rulat 'def Hello()', a fost creata o funcție denumita "Hello".
 2. Câ nd a fost rulata linia 'print Hello()', a fost executata funcția "Hello" (a fost rulat codul acesteia).
 3. Funcția "Hello" a afișat "Hello" pe ecran, apoi a returnat numă rul "1234" in programul principal.
 4. Programul principal vede acum linia ca fiind "print 1234" si ca rezultat a afișat "1234".

Argumentele funcțiilor

Ne vom mai referi la un singur subiect legat de funcții - transmiterea parametrilor. Amintește-ti
cum am definit prototipul unei funcții:

def nume_functie(parametru_1,parametru_2):
{acesta este codul funcției}
{si mai mult cod}
{si mai mult cod}
return {valoare ce trebuie returnata in programul principal}

In codul de mai sus, parametru_1 si parametru_2 (intre paranteze) reprezintă argumentele funcției.
O funcție poate avea oricâ te argumente, separate prin virgule. La apelul acesteia, prima valoare
aflata in interiorul parantezelor va fi transmisa variabilei parametru_1. Cea de-a doua (după prima
virgula) va merge la variabila parametru_2. Aceasta se întâ mpla indiferent de cat de mulți
parametri exista in funcție (de la 0 la infinit). De exemplu:

def functie_amuzanta(cuvant1,cuvant2,cuvant3):
print "Propoziția creata este: " + cuvant1 + cuvant2 + cuvant3
return cuvant1 + cuvant2 + cuvant3

Ca exemplu, poți apela funcția de mai sus astfel: functie_amuzanta("La ","mulți ","ani!"). Prima
valoare (care este "La ") va fi trimisa in variabila denumita cuvant1. Cea de-a doua valoare din
paranteze ("mulți ") va fi in variabila denumita cuvant2 si așa mai departe. Astfel sunt trimise
valorile din programul principal in funcții - in paranteze, după numele funcției.

Un program complet

Amintește-ti de programul calculator. Ti s-a pă rut cam confuz? Cred ca da, deci sa-l rescriem cu
ajutorul funcțiilor.

Mai întâ i vom defini toate funcțiile pe care le vom utiliza cu ajutorul operatorului def. Apoi vom
avea programul principal, cu acel cod confuz înlocuit de funcții dră guțe si clare, ceea ce îl va face
mai ușor de citit si de înțeles.

# program calculator

# NU AVEM NEVOIE DE COD AICI


# In continuare definim funcțiile
17
Introducere în PYTHON

# Funcția menu afișează meniul


def menu():
#afișează opțiunile
print "Bine ai venit la calculator.py"
print "Opțiunile tale sunt:"
print " "
print "1) Adunare"
print "2) Scă dere"
print "3) Înmulțire"
print "4) Împă rțire"
print "5) Ieșire din calculator.py"
print " "

return input ("Alege opțiunea: ")

# Funcția add aduna doua numere


def add(a,b):
print a, "+", b, "=", a + b

# Funcția sub scade doua numere


def sub(a,b):
print b, "-", a, "=", b - a

# Funcția mul înmulțește doua numere


def mul(a,b):
print a, "*", b, "=", a * b

# Funcția div împarte doua numere


def div(a,b):
print a, "/", b, "=", a / b

# ACUM INCEPE PROGRAMUL PRINCIPAL


loop = 1
choice = 0
while loop == 1:
choice = menu()
if choice == 1:
add(input("Aduna asta: "),input("cu asta: "))
elif choice == 2:
sub(input("Scade asta: "),input("din asta: "))
elif choice == 3:
mul(input("Înmulțește asta: "),input("cu asta: "))
elif choice == 4:
div(input("Împarte asta: "),input("la asta: "))
elif choice == 5:
loop = 0

print "Iți mulțumim ca ai utilizat calculator.py!"

# AICI SE TERMINA PROGRAMUL

18
Introducere în PYTHON

Programul inițial avea 34 linii de cod. Noul program are 35! Este puțin mai lung, dar daca îl privești
cum trebuie, este de fapt mai simplu.

Toate funcțiile necesare au fost definite la început. Aceasta nu este de fapt o parte a programului
principal - formează o mulțime de programele pe care le vei apela mai tâ rziu. Le-ai putea reutiliza
in alt program daca ai avea nevoie, fă ră a-i spune din nou computerului cum sa adune si sa scadă .

Daca privești partea principala a programului (intre linia "loop=1" si 'print "Iți mulțumim..."'), sunt
doar 15 linii de cod. Aceasta înseamnă ca daca ai fi vrut sa scrii acest program in mod diferit, ar fi
trebuit sa scrii aproximativ 15 linii fata de 34 de linii cate ai fi avut in mod normal fă ră funcții.

Trucuri pentru transmiterea parametrilor

Funcția add ar putea fi apelata astfel:

add(input("Aduna asta: "),input("cu asta: "))

Am vrut sa am totul într-o singura linie, cu cat mai puține variabile posibil. Iți amintești cum ară tau
funcțiile in programul principal? Daca numerele transmise funcției add() ar fi fost 2 si 30,
programul principal ar fi vă zut urmă toarele:

add(2,30)

Aceasta va rula apoi funcția add, adunâ nd 2 si 30, apoi afișâ nd rezultatul. Funcția de adunare nu
include instrucțiunea return, ceea ce înseamnă ca nu returnează nimic in programul principal. Pur
si simplu aduna 2 numere si afișează rezultatul pe ecran, dar programul principal nu vede nimic din
toate acestea.

In loc de (input("Aduna asta: ") si input("cu asta: ")) ai putea utiliza ca parametri doua variabile.
De exemplu:

num1 = 45
num2 = 7
add(num1,num2)

Pentru ce avem mai sus, amintește-ti ca funcția că reia ii trimiți variabilele nu le poate modifica -
sunt utilizate pur si simplu ca valori. O alta modalitate ar fi sa apelezi funcția direct cu valorile
numerice:

add(45,7)

Exemplul de mai sus este corect deoarece singurul lucru vă zut de funcție sunt valorile transmise ca
parametri. Aceste valori sunt așezate in argumentele corespunză toare din definiția funcției "add",
respectiv in variabilele a si b.

Pe scurt:

 Singurul lucru vă zut de funcții sunt parametrii trimiși din programul principal.
 Singurul lucru vă zut de programul principal sunt valorile returnate de funcții.

19
Introducere în PYTHON

In urmă toarea parte a acestei serii vei putea analiza si alte exemple de utilizare a funcțiilor.

Introducere in Python - Partea a III-a. Liste si bucla for.

Enumeră ri, liste si dicționare


Introducere
Încă te doare capul de la ultima discuție despre funcții? Nu te îngrijora, urmă toarea secțiune te va
solicita mai puțin. Ne întoarcem la ceva simplu - variabile.
Rolul variabilelor este de a stoca o anumita informație. Ele pot întoarce acea informație la un
moment dat si informația deținuta poate fi modificata oricâ nd.
Dar daca trebuie sa stochezi o lista lunga de date care nu se schimba in timp, cum ar fi de exemplu
lunile anului? Sau poate o lista de informații care este actualizata in timp, cum ar fi numele pisicilor
tale? Ai putea avea noi pisici, unele ar putea muri, etc. Dar ce spui despre o carte de telefon? Pentru
aceasta ai nevoie de ceva referințe - ai avea o lista de nume si atașat fiecă rui nume un numă r de
telefon. Cum ai face asta?
Soluția - Liste, enumerări si dicționare
Pentru problemele descrise mai sus, Python oferă trei soluții diferite - enumeră ri, liste si dicționare:
 Listele sunt exact ceea ce par - liste de valori. Fiecare este numerotata, începâ nd de la 0 -
prima este numerotata cu 0, a doua cu 1, a treia cu 2, etc. Poți șterge valori din lista sau poți
adaugă altele noi la finalul acesteia. De exemplu, numele pisicilor tale.
 Enumeră rile sunt asemeni listelor, dar nu le poți schimba valorile. Valorile pe care le acorzi
de la început sunt valorile cu care ramai blocat tot restul programului. Din nou, fiecare
valoare este numerotata începâ nd cu 0, pentru o referire mai facila. De exemplu: denumirile
lunilor anului.
 Dicționarele sunt exact ceea ce le spune numele - dicționare. Într-un dicționar, avem un
index de cuvinte si pentru fiecare dintre ele, o definiție. In Python, indexul este denumit
cheie (key), iar definiția - valoare (value). Valorile dintr-un dicționar nu sunt numerotate si
nu se afla într-o anumita ordine. Poți adaugă , îndepă rta si modifica valorile din dicționare.
De exemplu, cartea de telefon.
Enumerările
Enumeră rile sunt destul de ușor de creat. Tot ceea ce trebuie sa faci este sa le dai un nume, si sa
specifici valorile pe care le conțin. De exemplu, iată o enumerare cu lunile anului:
lunile_anului = ('Ianuarie','Februarie','Martie','Aprilie','Mai','Iunie',\
'Iulie','August','Septembrie','Octombrie','Noiembrie','Decembrie')
 Observa ca particula "\" de la finalul primului râ nd leagă prima linie de urmă toarea. Este o
metoda utila pentru ca râ ndurile lungi sa devina mai inteligibile.
 Din punct de vedere tehnic, nu trebuie sa aplici parantezele (acele '(' si ')' ) dar astfel codul
este mai puțin confuz.
20
Introducere în PYTHON

 Poți avea spatii după virgule daca dorești - dar nu contează prea mult.
Python organizează valorile dintr-o enumerare intr-un index util, numerotat - începâ nd cu 0, in
ordinea in care le-ai introdus. Va fi organizata astfel:

Index Valoare

0 Ianuarie

1 Februarie

2 Martie

3 Aprilie

4 Mai

5 Iunie

6 Iulie

7 August

8 Septembrie

9 Octombrie

10 Noiembrie

11 Decembrie

Si acestea sunt enumeră rile! Foarte ușor...


Listele
Listele sunt foarte asemă nă toare enumeră rilor. Listele pot fi editate, deci valorile lor pot fi
modificate. De cele mai multe ori, utilizam liste si nu enumeră ri, deoarece dorim sa schimbam
valorile daca este necesar.
Listele sunt definite intr-un mod similar enumeră rilor. Sa spunem ca ai 5 pisici, numite Tom,
Snappy, Kitty, Jessie si Chester. Pentru a le așeza sub forma unei liste, ar trebui sa scrii:
pisici = ['Tom', 'Snappy', 'Kitty', 'Jessie', 'Chester']
După cum poți observa, codul este exact la fel ca al enumeră rilor, CU EXCEPTIA FAPTULUI ca toate
valorile se afla intre paranteze pă trate si nu intre paranteze rotunde. Din nou, nu exista spatii după
virgule.
Valorile din liste sunt apelate la fel ca si in cazul enumeră rilor. De exemplu, pentru a afișa numele
celei de-a treia pisici, ar trebui sa tastezi:
print pisici[2]

21
Introducere în PYTHON

Poți accesa si o anumita secțiune dintr-o lista. De exemplu, pisici[0:2] va returna primele doua
pisici.
Specificul listelor consta in posibilitatea modifică rii lor. Pentru a adaugă o valoare in lista, utilizează
funcția append(). Sa spunem ca ai o noua pisica numita Catherine. Pentru a o adaugă in lista, ar
trebui sa tastezi:
pisici.append('Catherine')
Este cam ciudat, nu? Apelul funcției apare după denumirea listei, fiind delimitata de aceasta printr-
un punct. Aceasta sintaxa va fi explicata in urmă toarele tutoriale. Pentru moment, retine ca un
element este adă ugat într-o lista astfel:
#adaugă o noua valoare la sfâ rșitul listei:
nume_lista.append(valoare_noua)

#ex. adaugă numă rul 5038 in lista 'numbers':


numbers.append(5038)
Am clarificat? Bine!

Acum, situația nefericita - Snappy a fost împușcat de un vecin si trebuie sa-l îndepă rtezi din lista.
Este ușor:

#Șterge cea de-a doua pisica, Snappy.


del pisici[1]

Tocmai ai îndepă rtat cea de-a doua pisica din lista. Si după aceasta parte morbida, sa trecem la:

Dicționare

Sa presupunem ca trebuie sa anunți câ teva persoane cu privire la decesul pisicii favorite. Pentru
aceasta, ai nevoie de o carte de telefon.

Listele utilizate mai sus nu sunt prea adecvate pentru o carte de telefon. Trebuie sa afli un numă r pe
baza numelui cuiva - si nu invers așa cum am procedat cu pisicile. In exemplele cu pisici si cu lunile
anului, i-am oferit computerului un numă r si acesta ne-a oferit un nume. Acum vrem sa-i furnizam
computerului un nume si sa ne returneze un numă r. De aceea avem nevoie de dicționare.

Deci cum cream un dicționar? Lasă deoparte echipamentul de lupta, nu este chiar atâ t de greu.

Amintește-ti, dicționarele au chei si valori. Intr-o carte de telefon, ai numele persoanelor si apoi
numerele. Observi ceva asemă nă ri?

Crearea unui dicționar seamă nă foarte mult cu cea a unei enumeră ri sau a unei liste. Enumeră rile
au ( si ) iar listele [ si ]. Ce crezi ca au dicționarele? Iată un exemplu de dicționar care conține 4
numere de telefon:

#Creează o agenda telefonica:


22
Introducere în PYTHON

agenda = {'Andrew Parson':8806336,


'Emily Everett':6784346, 'Peter Power':7658344,
'Lewis Lame':1122345}

Pentru a afișa numă rul de telefon al lui Lewis Lame, am scrie:

print agenda['Lewis Lame']

Observa cum in loc de a identifica o valoare după numă r, ca in cazul pisicilor sau al lunilor anului,
identificam valoarea utilizâ nd o alta valoare- in acest caz numele persoanei.

Ok, am creat o noua agenda telefonica. Acum vrei sa adaugi noi numere de telefon. Iată cum:

#Adaugă persoana 'Gingerbread Man' in agenda


agenda['Gingerbread Man'] = 1234567

Tot ceea ce spune acea linie este ca in cartea de telefon exista o persoana numita Gingerbread Man
si ca numă rul sau este 1234567. Cu alte cuvinte - cheia este 'Gingerbread Man' iar valoarea este
1234567.

Ștergerea înregistră rilor dintr-un dicționar se face ca si in cazul listelor. Sa spunem ca Andrew
Parson este vecinul vostru care a împușcat pisica. Nu vrei sa mai vorbești vreodată cu el deci nu mai
ai nevoie de numă rul sau. Ca într-o lista, trebuie sa tastezi:

del agenda['Andrew Parson']

Din nou, este foarte ușor. Operatorul del șterge orice funcție, variabila sau înregistrare dintr-o lista
sau dicționar.

Iți amintești de funcția append pe care am utilizat-o pentru liste? Sunt destule funcții
asemă nă toare care pot fi utilizate pentru dicționare. Mai jos poți vedea un program ce incorporează
câ teva dintre aceste funcții, însoțite de explicații.

Scrie acest program in Python IDLE (poți sari peste comentarii). Experimentează cat dorești.

#Câ teva exemple de dicționare

#Mai întâ i definim un dicționar care este gol


ages = {}

#Adă ugam câ teva nume in dicționar


ages['Sue'] = 23
ages['Peter'] = 19
ages['Andrew'] = 78
ages['Karren'] = 45

#Utilizam funcția has_key() -


#Aceasta funcție are prototipul:
#nume_functie.has_key(nume_cheie)
#si returnează TRUE daca dicționarul
#conține cheia respectiva
23
Introducere în PYTHON

#si FALSE in caz contrar


if ages.has_key('Sue'):
print "Sue este in dicționar. Ea are",
ages['Sue'], "ani"

else:
print "Sue nu este in dicționar"

#Utilizam funcția keys() -


#Aceasta funcție returnează o lista
#cu toate denumirile cheilor din dicționar.
print "Dicționarul conține urmă toarele persoane:"
print ages.keys()

#Cheile pot fi reținute într-o lista:


keys = ages.keys()

#Similar, funcția values()


#returnează o lista cu valorile din dicționar.
print "Vâ rstele persoanelor sunt:",
ages.values()

#Reținem valorile într-o lista:


values = ages.values()

#Poți ordona o lista folosind funcția sort()


#Nu poți ordona dicționare
print keys
keys.sort()
print keys

print values
values.sort()
print values

#Poți afla numă rul de elemente dintr-un dicționar


#utilizâ nd funcția len()
print "Dicționarul are ",
len(ages), "elemente"

Bucla "for"

In esența, bucla for executa ceva pentru fiecare valoare din lista. Modul in care este setata poate
pă rea puțin confuz, dar de fapt este foarte simplu. Iată un exemplu al utiliză rii acesteia:

# Exemplu bucla 'for'


# In primul râ nd creează o lista pe care o vom parcurge:
newList = [45, 'mă nâ ncă ', 90210, "Buna dimineața", -67]

# creează bucla:
24
Introducere în PYTHON

# Parcurge newList si pune fiecare element


# in variabila value si afișează -o
for value in newList:
print value

După cum vezi, bucla trece prin toate valorile listei menționate după  in. Apoi le așează in value,
executa codul imbricat in bucla si trece la urmă toarea valoare. Urmă torul exemplu parcurge un
string care este citit de la tastatura:

# exemplu de program ce parcurge un string


Word = raw_input("Introdu șirul de caractere: ")

for letter in Word:


call = "Litera " + letter + "!"
print call

print "Ș irul de caractere este:"


print Word + "!"

Tocmai ai învă țat câ teva lucruri:

 După cum vezi, variabilele string sunt liste de caractere.


 Programul trece prin fiecare litera (sau valoare) din cuvâ nt si le afișează pe ecran.

Crearea unei funcții meniu

Pana acum ai învă țat despre variabile, liste, bucle si funcții. In continuare vei putea vedea câ teva
exemple de programe ce utilizează noțiunile parcurse.

# FUNCTIA MENU
# Programul citește un string cu opțiunile din meniu
# si o întrebare
# Asigura-te ca opțiunile nu se repeta.

def menu(list, question):


for entry in list:
print 1 + list.index(entry),
print ") " + entry

return input(question) - 1

Iată explicația codului:

 def menu(list, question) definește funcția menu cu doi parametri: o lista cu opțiunile


meniului si întrebarea pentru alegerea unei opțiuni.
 for entry in list parcurge lista entry
 list.index(entry) utilizează funcția .index() pentru localiza poziția elementului entry.
 Elementul entry este afișat, apoi se trece la elementul urmă tor
 După ieșirea din bucla for, input(question) - 1 afișează întrebarea, apoi returnează valoarea
in programul principal.
25
Introducere în PYTHON

Nu a fost prea greu, nu? Programul propriu-zis are 5 linii - acesta este miracolul a ceea ce am
învă țat pana acum! Vom verifica funcția pe care am scris-o in urmă toarele exemple.

Primul tă u "Joc"

Cum va arata primul tă u program? Ce-ai spune despre un (foarte) simplu joc de aventuri? Pare a fi
amuzant! Va cuprinde doar o camera a unei case si va fi extrem de simplu. Vor exista 5 articole si o
ușa. Intr-unul dintre cele 5 articole se va afla o cheie pentru ușa. Trebuie sa gă sești cheia si sa
deschizi ușa. Iți voi oferi întâ i o varianta in pseudocod, apoi in Python:

# Versiunea in pseudocod a jocului

Introdu funcția menu in program

Afișează un mesaj ce cuprinde descrierea camerei.


Utilizatorul poate inspecta 6 obiecte: un vas cu plante, un tablou,\
o vaza, o veioza, un pantof si ușa

Spune calculatorului ca ușa e încuiata


Spune calculatorului unde se afla cheia

Afișează meniul cu obiectele:


Afișează cele 6 opțiuni
Afișează întrebarea "Ce obiect vrei sa examinezi?"

daca utilizatorul vrea sa se uite că tre:


vasul cu plante:
In cazul in care cheia e ascunsa aici, da-i cheia
altfel spune-i ca nu se afla aici
tablou:
la fel ca mai sus
etc.
ușa:
daca utilizatorul are cheia, deschide ușa
altfel spune-i sa mai caute

Afișează un mesaj de succes pentru completarea jocului.

Din acesta putem scrie un program adevă rat. Ești pregă tit? Iată -l (treci peste comentarii):

#PRIMUL TAU JOC

#funcția menu
def menu(list, question):
for entry in list:
print 1 + list.index(entry),
print ") " + entry

return input(question) - 1

26
Introducere în PYTHON

#Creează lista cu obiectele din camera:


items = ["vas cu plante","tablou","vaza","veioza","pantof","ușa"]

#Cheia se afla in vaza (al doilea element din lista de mai sus):
keylocation = 2

#Utilizatorul nu a gă sit cheia:


keyfound = 0

loop = 1

#Scrie un text de introducere:


print "Aseară ai adormit in camera ta."

print "Dimineața te-ai trezit încuiat într-o camera necunoscuta, "


print "si nu știi cum si câ nd ai ajuns acolo. In camera poți vedea "
print len(items), "obiecte:"
for x in items:
print x
print ""
print "Ușa e încuiata. Crezi ca poți gă si cheia?"
#Atâ t timp cat utilizatorul se afla in camera
#parcurge o bucla infinita:
while loop == 1:
choice = menu(items, „Ce obiect vrei sa examinezi? ")
if choice == 0:
if choice == keylocation:
print "Ai gă sit o cheie in vasul cu plante."

print ""
keyfound = 1
else:
print "Vasul cu plante e gol."
print ""
elif choice == 1:
if choice == keylocation:
print "Ai gă sit o cheie in spatele tabloului."
print ""

keyfound = 1
else:
print "Nu se afla nimic in spatele tabloului."
print ""
elif choice == 2:
if choice == keylocation:
print "Ai gă sit o cheie in vaza."
print ""
keyfound = 1
else:
print "Vaza e goala."

27
Introducere în PYTHON

print ""
elif choice == 3:
if choice == keylocation:
print "Ai gă sit o cheie sub veioza."
print ""
keyfound = 1
else:
print "Nu se afla nimic sub veioza."
print ""

elif choice == 4:
if choice == keylocation:
print "Ai gă sit o cheie in pantof."
print ""
keyfound = 1
else:
print "Nu se afla nimic in pantof."
print ""
elif choice == 5:
if keyfound == 1:
loop = 0
print "Ai încercat cheia si ușa a fost descuiata."

print ""
else:
print "Ușa e încuiata, trebuie sa gă sești cheia."
print ""

# Amintește-ti ca continua codul pe urmă toarea linie

print "Felicită ri
ai reușit sa ieși din camera."

Un joc foarte simplu, dar amuzant. Nu fi speriat de numă rul mare de linii de cod pentru ca multe
dintre ele sunt instrucțiuni "if", foarte ușor de citit.

Sa îmbună tă țim jocul

Prima întrebare pe care ar trebui sa ti-o pui este "funcționează programul?" Ră spunsul este da. Apoi
ar trebui sa te întrebi "funcționează bine?" - nu chiar. Funcția menu() este grozava - te scutește de a
tasta mult cod. Bucla 'while' este puțin confuza - 4 nivele de indentare intr-un singur program. Se
poate si mai bine!

In urmă toarele tutoriale vei vedea ca acest exemplu ar putea fi mult mai ușor implementat cu
ajutorul claselor. Dar, momentan, sa ne mulțumim cu o funcție ce va reduce dezordinea. Ii vom
transmite 2 parametri - opțiunea aleasa si locația cheii. Valoarea returnata este 1 in cazul in care
cheia a fost gă sita si 0 in caz contrar. Sa vedem cum funcționează :

def inspect(choice,location):
if choice == location:
print ""
28
Introducere în PYTHON

print "Ai gă sit cheia!"


print ""
return 1
else:
print ""
print "Nimic interesant aici."
print ""
return 0

Acum programul principal poate fi ceva mai simplu. Iată bucla while modificata:

while loop == 1:
keyfound = inspect(menu(items, „Ce obiect vrei sa examinezi? "),keylocation)
if keyfound == 1:
print "Ai încercat cheia si ușa a fost descuiata!"
loop = 0

Acum programul devine cu mult mai scurt - de la 83 linii greoaie la 50 linii clare! Desigur, pierzi
ceva din versatilitate, toate articolele din camera vor genera aceleași mesaje. In plus, jocul devine
mai puțin interesant deoarece ușa este descuiata automat după ce gă sești cheia. Totodată ,
programul devine ceva mai greu de modificat.

Cam atâ t despre liste si bucla for. In urmă torul tutorial din aceasta serie vei putea citi despre clase,
obiecte, si utilizarea lor in Python.

Introducere in Python - Partea a IV-a. Clase si obiecte

Introducere

Programarea in general se bazează foarte mult pe reutilizarea codului. De obicei, aceasta se


realizează cu ajutorul funcțiilor. Daca ai scris deja un cod ce îndeplinește o anumita sarcina, atunci îl
poți executa de oricâ te ori vrei daca îl incluzi într-o funcție. In plus, o funcție poate fi apelata de
oriunde din cod si computerul va ști întotdeauna la ce te referi.

Desigur, funcțiile își au limitele lor. Ele nu stochează informații cum ar valorile variabilelor, ceea ce
înseamnă ca de fiecare data câ nd este rulata, o funcție începe de la zero. Atunci, ce se întâ mpla daca
anumite funcții si variabile se afla in strâ nsă legă tura si trebuie sa interacționeze destul de mult?

Obiectele din lumea reala au doua caracteristici: stare si comportament. Câ inii au stare (nume,
culoare, rasa, le este foame) si comportament (latră , aleargă , dau din coada). Si bicicletele au stare
(trepte de viteza, cadența a pedalei, frâ ne) si comportament (schimbarea vitezei, schimbarea
cadenței pedalei, aplicarea frâ nei).

Comportamentul unui obiect poate fi modelat cu ușurința cu ajutorul funcțiilor. Dar ce se întâ mpla
atunci câ nd vrei sa reții starea unui obiect? Ce se întâ mpla daca de fiecare data câ nd te plimbi cu
bicicleta, lanțul slă bește, materialul de pe sa se uzează cate puțin, devii din ce in ce mai frustrat si
apare o noua zgâ rietura pe ghidon? O funcție nu poate face asta. O funcție conduce la un singur
rezultat, nu la patru, cinci sau cinci sute. Avem nevoie de o modalitate de grupare a funcțiilor si a
variabilelor intr-un singur loc, pentru a putea interacționa intre ele.

29
Introducere în PYTHON

Identificarea stă rii si a comportamentului in cazul obiectelor reale reprezintă o metoda minunata
de a începe sa gâ ndești in termenii programă rii orientate pe obiecte. Obiectele software sunt din
punct de vedere conceptual similare obiectelor lumii reale: si acestea au stare si comportament. Un
obiect își pă strează starea in câ mpuri (variabile in anumite limbaje de programare) si își expun
comportamentul prin metode (funcții in anumite limbaje de programare). Metodele operează
asupra stă rii interne a unui obiect si servesc ca mecanism primar in cazul comunică rii de la obiect
la obiect. Ascunderea stă rii interne si solicitarea ca orice interacțiune sa se execute prin intermediul
metodelor obiectelor poarta numele de încapsulare a datelor - principiul fundamental al
programă rii orientate pe obiecte.

Crearea unei clase

In lumea reala, deseori vei gă si multe obiecte individuale de același fel. Pot exista mii de alte
biciclete, toate avâ nd aceleași caracteristici, fiind același model. Fiecare bicicleta a fost construita
după același tipar, deci conține aceleași componente. In termenii programă rii orientate pe obiecte,
spunem ca bicicleta este o instanța a clasei de obiecte cunoscute sub numele de biciclete. Deci, o
clasa reprezintă tiparul după care sunt create obiectele individuale, ce poarta numele de instanțe
ale clasei.

Deci cum definești o clasa? In primul râ nd, declarația unei clase trebuie sa înceapă cu
operatorul class:

# Definiția unei clase


class nume_clasa:
[instructiune 1]
[instructiune 2]
[instructiune 3]
[etc]

Mai jos poți vedea un exemplu de cod ce definește o clasa FormaGeometrica:

#Exemplu de clasa
class FormaGeometrica:
def __init__(self,x,y):
self.x = x
self.y = y
descriere = "Aceasta forma nu a fost descrisa încă "
autor = "Nu exista un autor al acestei forme "
def aria(self):
return self.x * self.y
def perimetrul(self):
return 2 * self.x + 2 * self.y
def seteazaDescriere(self,text):
self.descriere = text
def seteazaAutor(self,text):
self.autor = text
def scaleaza(self,scale):
self.x = self.x * scale

30
Introducere în PYTHON

self.y = self.y * scale

După cum poți vedea, clasa Shape conține o descriere a unei forme geometrice (data de variabile) si
operațiunile pe care le poți efectua cu forma (date de funcții). Acesta este un aspect foarte
important - nu ai creat de fapt o forma, ci descrierea unei forme. Forma are o lă țime (x), o înă lțime
(y) si metode cu ajutorul că ruia ii poți calcula aria si perimetrul.

Ceea ce trebuie sa reții este ca definirea unei clase nu rulează nici un cod, ci are rolul de a grupa
funcții si variabile într-o singura entitate.

Funcția denumita __init__ este apelata câ nd cream o instanța a clasei FormaGeometrica - adică ,


atunci câ nd cream o forma propriu-zisa, conform șablonului pe care îl avem. Funcția__init__ poarta
denumirea de constructorul clasei.

Pentru a te referi la elementele unei clase din interiorul acesteia, trebuie sa utilizezi operatorul  self.
De asemenea, self reprezintă primul parametru pentru orice funcție definita in cadrul unei clase.
Orice funcție sau variabila creata pe primul nivel de indentare aparține automat clasei. Pentru a
accesa aceste funcții si variabile in alta locație din cadrul clasei, denumirea lor trebuie sa fie
precedata de self si de un punct (ex. self.nume_variabila).

Utilizarea unei clase

Este interesant ca putem crea o clasa, dar cum o putem utiliza? Iată cum poți crea un obiect de tipul
FormaGeometrica:

dreptunghi = FormaGeometrica (100,45)

Valorile furnizate intre paranteze sunt de fapt parametri transmiși funcției __init__. Aceasta va fi
executata automat, inițializâ nd proprietă țile x si y ale obiectului cu valorile 100 si respectiv 45.
Instanța clasei este reținuta in variabila rectangle.

In acest moment, iți poți imagina instanța clasei noastre, rectangle, ca fiind o colecție de variabile si
de funcții. Pentru a accesa proprietă țile si metodele obiectului din afara clasei vei înlocui cuvâ ntul
cheie self cu numele variabilei, respectiv rectangle. De exemplu:

#afișează aria dreptunghiului:


print dreptunghi.aria()

#afișează perimetrul dreptunghiului:


print dreptunghi.perimetrul()

#setează descrierea dreptunghiului


dreptunghi. seteazaDescriere("Un dreptunghi a că rui lă țime este de doua ori mai \mare decâ t
înă lțimea")

#scaleaza dreptunghiul cu 50%


dreptunghi.scaleaza(0.5)

#afișează aria dreptunghiului scalat


print dreptunghi.aria()
31
Introducere în PYTHON

Desigur, poți crea oricâ t de multe instanțe ale unei clase. Iată un exemplu:

dreptunghi_lung = Shape(120,10)
dreptunghi_inalt = Shape(130,120)

Ambele obiecte, dreptunghi_lung cat si dreptunghi_inalt, au propriile funcții si variabile - sunt total
independente una de alta.

Iată câ țiva termeni specifici pentru programarea orientata pe obiecte:

• Atunci câ nd cream o clasa se numește ca o definim.


• Gruparea variabilelor si metodelor similare poarta numele de încapsulare.
• O variabila definita in interiorul unei clase poarta numele de proprietate.
• O funcție definita in interiorul unei clase poarta numele de metoda.
• Un obiect este o instanța a unei clase.
• O clasa reprezintă o structura de date - ea retine informații si definește metodele necesare pentru
procesarea acestora. 

Moștenirea

Cunoaștem modul in care clasele grupează variabile si funcții, cunoscute sub denumirea de atribute
si metode, in așa fel încâ t datele si codul care le procesează sa se afle in aceeași locație. Putem crea
oricâ te instanțe ale acelei clase, pentru a nu mai fi necesar sa scriem un nou cod pentru fiecare
obiect pe care îl cream. Dar in cazul adă ugă rii de noi elemente designului unei biciclete? Aici
intervine moștenirea.

Programarea orientata pe obiecte le permite claselor sa moștenească stă rile si comportamentele


comune din alte clase, ceea ce înseamnă crearea unei clase copil pe baza unei clase părinte. Clasa
copil conține toate proprietă țile si metodele clasei pă rinte, dar poate include si elemente noi. In
cazul in care vreuna dintre noile proprietă ți sau metode are aceeași denumire ca o proprietate sau
metoda din clasa pă rinte, vor fi utilizate cele din clasa copil.

Python face moștenirea foarte ușoara. Iți amintești de clasa FormaGeometrica? Sa zicem ca am vrea
sa definim o clasa noua, sa spunem un pă trat, pe baza clasei precedente:

class Patrat(FormaGeometrica):
def __init__(self,x):
self.x = x
self.y = x

După cum poți observa, numele clasei pă rinte a fost trecut intre paranteze după numele clasei copil.
Aceasta înseamnă ca noua clasa Pă trat va conține toate proprietă țile si metodele clasei
FormaGeometrica. Singurul lucru pe care trebuie sa-l mai faci este sa redefinești funcția __init__,
astfel încâ t lă țimea (x) si înă lțimea(y) obiectului de tip Pă trat sa fie egale.

Sa aplicam ce am învă țat si sa cream o noua clasa, de aceasta data moștenita din Pă trat:

32
Introducere în PYTHON

class PatratDublu(Pă trat):


def __init__(self,y):
self.x = 2 * y
self.y = y
def perimetrul(self):
return 2 * self.x + 3 * self.y

Aceasta clasa va reprezenta doua pă trate lipite, ceea ce înseamnă ca trebuie sa redefinim si funcția
ce calculează perimetrul. Ca exercițiu, încearcă sa creezi o instanța a acestei clase.

Referințe si liste de obiecte

Operatorul de atribuire funcționează diferit pentru obiecte. In cazul variabilelor scalare, daca
scriem variabila2 = variabila1 înseamnă ca variabila2 va prelua valoarea variabilei 1.

In cazul obiectelor, daca avem o atribuire instanta2 = instanta1, cele doua variabile vor reprezenta
referințe că tre același obiect. Cu alte cuvinte, daca proprietă țile obiectului instanta1 sunt
modificate, aceasta modificare va fi vizibila si in instanta2.

In alte limbaje, astfel de atribuiri sunt efectuate cu ajutorul pointerilor, dar in Python aceasta
operație se efectuează transparent.

Aspectul final pe care îl vom discuta se refera la dicționare de obiecte. Ț inâ nd minte ceea ce tocmai
am învă țat despre pointeri, putem atribui o instanța a unei clase unei intră ri dintr-o lista sau
dicționar. Aceasta permite gruparea mai multor obiecte sub un singur nume de lista sau dicționar.
Iată un exemplu:

# Acest exemplu presupune ca au fost deja definite


# clasele FormaGeometrica, Pă trat si PatratDublu.
# Mai întâ i cream dicționarul:
Dictionary = {}

# Apoi definim câ teva obiecte pe care le adă ugam in dicționar:


Dictionary["Pă trat dublu 1"] = PatratDublu(5)
Dictionary["Dreptunghi lung"] = FormaGeometrica(600,45)

# Calculam aria unui obiect din dicționar:


print Dictionary["Dreptunghi lung"].aria()

# Setam autorul unui obiect din Dictionary, apoi îl afișam


Dictionary["Pă trat dublu 1"].seteazaAutor("Autor")
print Dictionary["Pă trat dublu 1"].autor

După cum poți observa, pur si simplu am înlocuit numele de variabila din partea stâ nga cu un
element din dicționar. Interesant, nu?

33

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