Python 1
Python 1
Noțiuni fundamentale
În această carte vom lucra cu Python 3 (sau variantele lui ulterioare). În prezent
există variantele Python 2 (și cele din clasa lui: 2.6 și 2.7 care sunt cele mai răspândite) și
Python 3 (de asemenea cu variantele lui). Din păcate, Python 3 nu a devenit încă
standardul dar, cel mai important, urmeaza sa devina! Tot din nefericire, majoritatea
framework-‐-urile necesare aplicațiilor web sunt scrise în Python2. Ele nu sunt compatibile
cu Python 3, așa că dacă veți încerca să le instalați pe un computer care rulează Python 3
nu veți reuși. O excepție notabilă8 este din cele observate de mine, Pyramid. Oricum, până
la a proiecta aplicații web scrise în Python e cale lungă de bătut pe care o începem cu..
(.exe) ultimei variante pe care-‐-l rulezi (Run). Pachetul este instalat automat pe partiția “C”
(vă sfătuiesc să nu o schimbați). Dacă însă vei deschide o fereastră în linia de comandă și
vei scrie python, limbajul nu va funcționa (încă) pentru că nu ai schimbat calea de rulare în
8
Între timp și Django – cel mai folosit și cunoscut web framework Python, a migrat complet spre Python3 ori
Mezzanine
9
python32 e varianta mea. La voi ar putea fi python33 sau python34 (varianta din momentul scrierii cărții)
7. Ok
8. Restartezi computerul
Dupa repornire, deschizi o nouă fereastră Command Prompt (DOS) și scrii python. Abia
interactiv.
Ca să rulezi un program Python în modul script (vom vedea imediat ce înseamnă asta) în
1. Scrii programul în Notepad (sau orice alt editor, mai puțin MS Word..)
comanda: cd Desktop (adică acolo unde ai salvat fișierul Python, să-‐-i zicem
test.py)
Dacă totul este în regulă și programul nu are erori de sintaxă, el va fi rulat fără probleme.
În MacOS X
Spre deosebire de Windows, în Mac OS X Python este deja (pre)instalat. Tot ceea ce trebuie
să faci este să deschizi Terminal-‐-ul (din Applications -‐-> Utilities -‐-> Terminal) și să scrii la
prompt: python. Imediat îți va apărea promterul python care este >>> și unde poți începe
să…”programezi” (asta în modul interactiv). Daca vei scrie însă programe într-‐-un editor de
text gen Smultron (până recent era gratis dar acuma obeserv că dezvoltatorul i-‐-a pus prețul
de 5$ pe Apple Store), atunci vei urma pașii de la rularea în Windows. În linii mari sunt
aceiași. Scrii programul în editorul preferat, îl salvezi pe desktop cu extensia .py, deschizi
preinstalate versiunile 2.6. sau 2.7. (ori mai vechi) ale Python. Dacă însă ai descărcat o
variantă 3.0 sau peste (de exemplu 3.2. , 3.3. sau 3.4.), ea va fi instalată în Applications. Nu
este nicio problemă, căci ca s-‐-o rulezi trebuie doar ca în Terminal să scrii în linia de
versiune Python (din clasa 3) să-‐-ți pornească automat atunci când scrii doar python în
Terminal (care îți va deschide invariabil varianta mai veche, cea preinstalată) trebuie să faci
unele modificări.
3. alias python=”python3″
4. Salvezi
- în interpretorul Python
- în modul script
Să vedem mai întâi, pentru a vă convinge că Python este un limbaj grozav, care este
diferența între scrierea celui mai simplu program în Java și unul în Python. În Java:
10
În versiunea Mac OS Maverick, acest truc nu funcționează, astfel că în linia de comandă scrieți python3 și
dați enter. Dacă nu adaugați numărul 3 dupa comanda python, computerul afișează în Terminal shell-‐-ul
versiunii 2.7. care este preinstalată. Daca lucrati in Ubuntu Linux, in versiunea 14 Python 3 este deja
preinstalat. Scrieti in Terminal (shortcut „Ctr+Alt+T„) python3 si este deschis shell-‐-ul Python.
public class HelloWorld {
și acuma în Python:
Deci ceea ce în Java se afișează cu ajutorul a șase linii, în Python se face cu una singură!
Pentru scrierea primului (și următoarelor) programe în Python trebuie să deschideți
Windows -> All Programs -> Python32 -> Python (Command Line) [Enter]
Același lucru se face și fără invocarea interpretorului, direct din Command Prompt /
fereastra DOS (Windows) sau Terminal (Mac OS, Linux). În fapt, sfatul meu este să lucrați
ar fi Eclipse, Netbeans sau Pycharm (exclusiv pentru Python). Cu toate că primele două
sunt dedicate programării în Java, ele admit instalarea de add-‐-on-‐-uri suplimentare pentru
mediumuri complexe (cel puțin nu la început de drum) care sunt îndeajuns de intimidante
pentru un începător. În plus, nici configurarea lor inițială nu e prea lesne de realizat.
Să revenim însă la lucruri ușoare. Astfel, o dată ce ai scris o declarație aici (în Windows
Command Prompt sau MacOS/Linux Terminal), automat – după apăsarea tastei “Enter”,
11
Totul este însă ca în Enviromnent Variables (Windows) calea de rulare către executabilul Python să fie
configurată corect (vezi p.11-‐-12 instalarea Python).
intrepretorul Python o (și) afișează pe ecran:
Modul script
Spre deosebire de interpretorul Python, modul script salvează declarațiile din program pe
personaj fictiv. Mai întâi scriem în editorul de text preferat (Notepad în Windows de
Salvăm programul sub numele popescu.py (eu l-‐-am salvat pe desktop) și apoi îl rulăm din
nu găsește fisierul (în cazul meu popescu.py) și va genera o eroare cât se poate de enervantă.
12
Puteți la fel de bine să scrieți București (cu diacritice). Nu va rezulta nicio eroare pentru că Python foloseste
pentru decodificare standardul UTF-‐-8 și nu ASCII.
13
Comanda cd desktop nu este case sensitive (nu ține cont dacă scrieți desktop sau Desktop) în Windows și
MacOS dar e case sensitive în Linux. Astfel, dacă lucrați pe un computer cu sistemul de operare Ubuntu
instalat (nu știu la celelalte distribuții Linux), comanda este neapărat cd Desktop, cu majusculă.
Poate vă întrebați de ce insist pe aceste aspecte care aparent nu par importante.
Dimpotrivă, ele sunt foarte importante, mai ales la început, când știi doar să deschizi
calculatorul dar esti plin de dorința de a învăța programare! Atunci când m-‐-am apucat să
Intrările (Input-‐-ul) care se fac de obicei de la tastatură, sunt datele pe care computerul le
O funcție este un cod prescris care realizează o operație. Python are numeroase funcții
preconstruite. Totuși, dintre toate, fundamentală rămâne funcția print, adică exact aceea
Când un program execută o funcție, spunem că el cheamă (invocă) funcția. Când invocăm
parantezelor scriem argumentul14 care reprezintă datele pe care le dorim afișate pe ecran.
programului. Ele doar arată începutul și sfârșitul textului pe care vrem să-‐-l afișăm.
14
Parametrul este definit de numele care apare în definiția funcției, în vreme ce argumentul reprezintă
variabila trecută unei funcții atunci când este invocată. Parametrul definește tipul de argument(e) pe care o
funcție îl poate accepta.
Prin urmare, putem afirma că print este cea mai importantă funcție. Recapitulând, cu
ajutorul ei afișăm ieșirea unui program în Python. Încercați în shell-‐-ul Python următoarea
linie de cod:
ghilimele. Se pot folosi ghilimele simple (‘ ‘), duble (“ ”) sau chiar triple (‘’’ ‘’’).
Să luăm de exemplu următoarea linie de cod care folosește ghilimele simple și duble:
print(“Vino’ncoa!”)
Ea va scoate la ieșire șirul literal:
Vino’ncoa!
Ce s-‐-ar întâmpla dacă în expresia (șirul) de mai sus am pune doar ghilimele simple (la fel
de bine duble sau triple)? Am primi din partea interpretorului (shell-‐-ul) Python o eroare de
Câteva cuvinte în plus trebuiesc adăugate despre ghilimelele triple (pe care nu le veți găsi
în Java, C++, C ori PHP) dar care au o semnificație aparte în Python. Mulți folosesc
ghilimelele triple pe post de comentarii, ceea ce este eronat. În Python comentariile sunt
(doar liniile de cod marcate) cu semnul diez (#) la început (citiți paragraful următor).
mai multe linii. Totuși, ele nu sunt ignorate de interpretorul Python așa cum se întâmplă cu
comentariile care încep cu semnul diez (#). Ele sunt așezate imediat după definiția unei
funcții sau clase, ori în vârful codului unui modul, caz în care se numesc docstrings.
Docstring-‐-urile pot include în interiorul lor ghilimele simple, duble sau de ambele feluri
Să vedem acuma ce se întâmplă daca scriem doar ghilimele_triple (fără funcția print) și
dăm enter:
Răspunsul este ușor nefiresc pentru că el ne arată codificarea intimă în Python folosind
Comentariile
Sunt folosite într-‐-un program ca să arăți ce ai vrut să faci acolo. Dacă peste câtva timp vei
redeschide programul, comentariile îți vor reaminti de ceea ce ai vrut să faci cu linia de cod
respectivă din program. Ele sunt ignorate de interpretorul Python dar nu trebuiesc
ignorate de tine!
15
Șirurile regulate sunt șirurile care nu sunt atribuite unei variabile.
Ex: #Acest program afiseaza
#numele unei persoane
print(‘Mircea Prodan’)
1.3. Variabile
Programarea înseamnă înainte de toate a jongla cu abstracțiuni. A lucra cu astfel de entități
ce nu sunt palpabile – cel puțin nu în faza lor de dezvoltare, este în opinia mea cel mai
dificil lucru pentru că în general, marea noastră majoritate avem o putere destul de limitată
de a imagina obiecte pipăibile dar care au drept fundament idei „incolore”, „inodore” și
mai cu seamă fără o formă anume. Din acest motiv ni se pare grea matematica...
Variabilele sunt printre cele mai importante elemente din programare și nu mă feresc să
afirm că dacă ele și manipularea lor este bine înțeleasă, ați făcut un mare pas înainte în
variabilelor este mulțumitor de ușoară. Tot ceea ce trebuie să faceți este să vă gândiți la o
Permiteți-‐-mi s-‐-o luăm altfel. Să presupunem că ați terminat recent facultatea, ați redactat
licența – care v-‐-a fost aprobată de profesorul îndrumător și apoi, așa cum cere
universității multe decenii de atunci încolo, dar și să predați un exemplar tipărit. Lucrarea
unui fișier Microsoft Word16 și deci ea este abstracta. Puteți s-‐-o țineți în mâna? Nu, eventual
legați, ea își pierde această calitate și devine un obiect în sine, cât se poate de palpabil, cu
care eventual vă puteți lăuda la familie și prieteni. Mergeți apoi la facultate și depuneți un
exemplar printat. Ea este înregistrată și depozitată într-‐-o încăpere a facultății. Hopa! Iată că
dintr-‐-o dată avem variabila care este încăperea și valoarea ei care este lucrarea de licență. Pe
Ar putea la fel de bine să fie o aplicatie de redactare din sursă deschisă în genul OpenOffice ori LibreOffice,
16
conțină lucrarea în format digital. Prin urmare “ardeți” un CD nou nouț, depozitând pe/în
el lucrarea în format digital. Aici variabila este CD-‐-ul căruia i-‐-am atribuit valoarea lucrare
de licență. Exemplul meu poate nu este cel mai fericit pentru că un CD obișnuit se poate
inscripționa doar o singură data, ceea ce ar însemna că o dată atribuită o valoare variabilei,
aceasta nu se mai poate modifica. În programare acest fapt nu este adevărat (din acest
motiv se numește variabilă). Totuși, există CD-‐-uri care se pot inscripționa de mai multe
variabilei (în cazul nostru CD) rămâne același, doar valoarea pe care i-‐-o atribuim (licența) se
schimbă.
Ex:
17
De fapt numele ei...
print( ) argument
funcția print
>>>latime = 10 (Enter)
>>>print(‘latime’)
latime
>>> print(latime) (Enter)
10
>>>
Exemplu de program care demonstrează o variabilă:
(variabila.py)
#Acest program demonstreaza o variabila
camera = 123
print(‘Stau in camera: ’)
print(camera)
Ieșirea (output-‐-ul) acestui program este:
Stau in camera:
123
Sa vedem in linia de comanda (Terminal) cum putem face economie de spațiu și efort prin
print am fi cuprins între ghilimele parametrul camera ca mai jos? Păi în loc să ne
afișeze valoarea parametrului care este 123, ne-‐-ar fi printat cuvântul (șirul literal)
camera:
Fig. 1.9. Importanța ghilimelelor18 la afișarea rezultatelor
(variabila2.py)
#Creeaza doua variabile numite viteza si distanta
viteza = 160
distanta = 300
#Afiseaza valoarea referita de variabile
print (‘Viteza este: ’)
print (viteza)
print (‘Distanta parcursa este: ’)
print (distanta)19
Este indicat ca numele variabilei să înceapă cu literă mică. Variabilele sunt sensibile la
litere mici sau mari (case sensitive) așa că de exemplu python nu este totuna cu Python..
trebuie să conțină spații dar au voie să conțină (și să înceapă) cu semnul underscore ( _ ).
Cu funcția print se pot afișa mai mulți itemi. Ex. (refacerea exemplului variabila.py):
18
Se pot folosi ghilimele simple sau duble, rezultatul este același.
19
Încercați acest exemplu pe calculatorul dumneavoastră, dar să cuprindă două declarații print și nu patru.
20
['ʹFalse'ʹ, 'ʹNone'ʹ, 'ʹTrue'ʹ, 'ʹand'ʹ, 'ʹas'ʹ, 'ʹassert'ʹ, 'ʹbreak'ʹ, 'ʹclass'ʹ, 'ʹcontinue'ʹ, 'ʹdef'ʹ, 'ʹdel'ʹ, 'ʹelif'ʹ, 'ʹelse'ʹ, 'ʹexcept'ʹ, 'ʹfinally'ʹ,
'ʹfor'ʹ, 'ʹfrom'ʹ, 'ʹglobal'ʹ, 'ʹif'ʹ, 'ʹimport'ʹ, 'ʹin'ʹ, 'ʹis'ʹ, 'ʹlambda'ʹ, 'ʹnonlocal'ʹ, 'ʹnot'ʹ, 'ʹor'ʹ, 'ʹpass'ʹ, 'ʹraise'ʹ, 'ʹreturn'ʹ, 'ʹtry'ʹ, 'ʹwhile'ʹ,
'ʹwith'ʹ, 'ʹyield'ʹ]
camera = 123
print(‘Stau in camera numarul ’, camera)
Dacă priviți cu atenție, veți observa ca propoziției îi lipsește ceva esențial (ca să
Haideți să vedem cum îl afișăm. (Încercați să figurați răspunsul fără să citiți paragraful de
mai jos).
Dacă îl punem imediat după ultimul parametru al funcției print (camera) va rezulta
o eroare de sintaxă. Pentru a nu primi o eroare, punctul trebuie la rândul lui cuprins
Să mai observăm (în linia 4) că dacă nu adăugăm un item separator21 (ca-‐-n finalul liniei 5),
punctul este așezat ușor anormal, la o distanță destul de mare de locul în care ar trebui să
fie. În output-‐-ul din linia 6 această mică inadvertență (corectă totuși din punct de vedere al
21
Am luat-‐-o puțin înainte, dar veți vedea foarte curând ce reprezintă un item separator.
La fel de bine putem să inversăm numele dacă ultima declarație ar arăta astfel:
print(nume, prenume)
iar la ieșire ar rezulta Popescu Vasile.
Ca să aflăm cu ce fel de date lucrăm utilizăm funcția type() ca în exemplele de mai jos:
Ce se întâmplă însă dacă unui intreg îi adăugăm zero la sfârșit? Pentru noi el rămâne un
întreg, nu însă și pentru calculator. Astfel, el devine un număr în virgulă mobilă (float):
În Python, o variabilă poate să refere orice tip de date: întreg, șir, în virgulă mobilă (float),
boolean. După ce o variabilă a fost atribuită unui anumit tip, ea poate fi reatribuită altui tip
de date.
22
Acestea nu sunt totuna cu numerele zecimale
14
Ex:
>>> x = ‘Sa mergem la masa’ (enter) #aici avem o variabilă #str (șir)
Java de exemplu, în Python acest lucru se face foarte ușor cu ajutorul funcției input().
Prompterul care clipește în fereastra DOS sau în Terminal este de fapt un șir care invită
Ex.:
15
Spațiul dintre semnul întrebării din șirul ‘Care este numele tău? ’ și ultima ghilimea este
necesar pentru ca după răspuns, întrebarea și răspunsul să nu fie lipite (de ex: Care este
numele tău?Vasile Popescu în loc de Care este numele tau? Vasile Popescu).
Funcția input returnează întotdeauna input-‐-ul (intrarea) userului ca pe un șir, chiar dacă
returnată de funcția input este șirul ‘65’. Aceasta poate fi o problemă dacă vrei să folosești
operații matematice.
Așadar:
Exemplul următor folosește funcția input ca să citească un șir (str), un numar întreg (int) și
(input.py)
#Ia numele, varsta si venitul financiar al userului
nume = input(‘Care e numele tau? ’)
varsta = int(input(‘Cati ani ai? ’))
venit = float(input(‘Care e venitul tau? ’))
#Afiseaza datele
print(‘Iata datele pe care le-ai introdus: ’)
print(‘Nume’, nume)
23
Reproduceți toate aceste exemple încet și atent pe computerul dumneavostră. Nu le copiați ca să vedeți
cum și dacă funcționează!! Programarea înseamnă două lucruri esențiale: pasiune și răbdare...
16
print(‘Varsta’,
varsta)
print(‘Venit’,
venit)
Concluzia este următoarea: atunci când introduci nume sau alte date literale scrii
simplu input (‘ ’). Când însă introduci numere (întregi sau în virgulă mobilă) e
musai să
int și float funcționează doar dacă itemul ce urmează să fie introdus conține o