Sunteți pe pagina 1din 73

Elemente de programare

Introducere în Python
Corneliu Agapi

Elemente
de
Programare

1
Elemente de programare
Introducere în Python
Corneliu Agapi

ALGORITMI
La finalul acestui capitol, veți putea să:
 Definiți termenul de secvență de instrucțiuni și să identificați scopul utilizării
secvențelor de instrucțiuni în crearea algoritmilor.
 Recunoașteți metodele posibile de reprezentare a problemelor: scheme logice,
pseudocod
 Recunoașteți simbolurile din schemele logice, precum: start/stop, proces, decizie,
intrare/ieșire, conector, săgeată
 Identificați secvențe de operații reprezentate în cadrul unei scheme logice sau unui
pseudocod.
 Scrieți un algoritm corect pe baza unei descrieri, utilizând o schemă logică sau un
pseudocod
 Remediați erorile dintr-un algoritm precum: elemente de program lipsă, secvență
incorectă de instrucțiuni, rezultat incorect.

1.0 Etape în rezolvarea problemelor

Principalele etape care se parcurg în rezolvarea unei probleme sunt:


(a) Stabilirea datelor inițiale și a obiectivului (ce trebuie determinat).
(b) Alegerea metodei de rezolvare.
(c) Aplicarea metodei pentru date concrete.
Exemplu.
Să presupunem că problema noastră este rezolvarea, în R, a ecuației x 2 −3x+2 = 0.
(a) Datele inițale sunt reprezentate de către coeficienții ecuației, iar obiectivul este
determinarea rădăcinilor reale ale ecuației.
(b) Vom folosi metoda de rezolvare a ecuației de gradul al doilea având forma generală:
ax2 + bx + c = 0. Această metodă poate fi descrisă astfel:
Pasul 1. Se calculează discriminantul: Δ = b2 − 4ac.
Pasul 2. Dacă Δ > 0 atunci ecuația are două rădăcini reale distincte: x 1,2 = −b±√Δ/2a,
altfel, dacă Δ = 0 atunci ecuația are o rădăcina reală dublă: x 1,2 = −b/2a
altfel ecuat¸ia nu are rădăcini reale.
(c) Aplicarea metodei pentru datele problemei (a = 1, b = −3, c = 2)
conduce la rezultatul: x1 = 1, x2 = 2.

2
Elemente de programare
Introducere în Python
Corneliu Agapi

1.1 Pașii unui Algoritm – Concepte

Secvențe de instrucțiuni
Algoritmul este o succesiune finită de pași care rezolvă o anumită cerință/problemă. Altfel
spus, algoritmii reprezintă probleme complexe descompuse în pași sau instrucțiuni mai
simple. În majoritatea algoritmilor, instrucțiunile sunt executate una după cealaltă, într-o
anumită ordine (secvență). O secvență reprezintă un număr de instrucțiuni simple ce ar fi
trebui executate una după cealaltă.
În majoritatea algoritmilor, contează ordinea de executare a instrucțiunilor. Un robot trebuie
să pună amestecul de ingrediente în tavă înainte de a introduce tava în cuptor. Proiectarea
secvenței de instrucțiuni reprezintă o competență crucială în programare. Un programator
trebuie să se asigure că toate acțiunile cerute sunt executate în ordinea corectă pentru a
îndeplini sarcina sau setul de sarcini. O secvență de instrucțiuni este metoda fundamentală
de control în cadrul unui program. Secvența de instrucțiuni este decisă în etapa de proiectare
a programului, unde se utilizează algoritmi și scheme logice pentru a crea cea mai eficientă
și corectă secvență de control a programului.
Intrare și ieșire
Instrucțiunile utilizează de cele mai multe ori informații din lumea exterioară computerului,
pe care apoi le prelucrează într-un anumit fel. Programele primesc informațiile de la
utilizator prin intermediul datelor de intrare (input) și generează un rezultat, anumite date
de ieșire (output).
Date de intrare (input)
Reprezintă o valoare aflată în afara computerului, necesară pentru executarea
instrucțiunilor.
De exemplu: o măsurare a temperaturii sau un număr tastat pe tastatura unui sistem de
securitate.
Date de ieșire (output)
Reprezintă o valoare calculată sau o acțiune efectuată de către program, afișată către lumea
exterioară. De exemplu: un led care se aprinde și se stinge, o alarmă care este setată sau un
mesaj afișat pe ecran.
Pași
Exemplu: Intrări și ieșiri pe un telefon mobil.
Un telefon mobil preia informații (input), le procesează și returnează rezultate (outputs).
 Touch screen-ul este o metodă importantă de introducere a datelor, de exemplu când
scrieți un mesaj sau când apăsați pe ecran pentru a deschide o aplicație.
 Ecranul de afișare reprezintă o metodă importantă de afișare a unor date, ca de
exemplu afișarea unei liste de contacte.
Decizii de tip Da/Nu
Așa cum ați văzut în capitolele anterioare, ordinea instrucțiunilor este importantă în
programare. În general, instrucțiunile sunt executate unele după celelalte, dar uneori trebuie
luate decizii cu privire la acțiunile viitoare. Algoritmul poate fi proiectat pentru a pune

3
Elemente de programare
Introducere în Python
Corneliu Agapi

întrebări utilizatorului și a aștepta un răspuns din partea acestuia pentru a decide următorul
pas.
O decizie de tip da/nu (yes/no) reprezintă o instrucțiune care alege următoarea
instrucțiune de executat. Acest lucru se realizează în funcție de răspunsul pozitiv sau negativ
introdus de utilizator.
Pași
Exemplu: Așteptarea ca un cuptor să se încălzească
Înainte de a adăuga amestecul de ingrediente în cuptor, cuptorul trebuie să fie încălzit la
temperatura potrivită. Un algoritm ar putea include o decizie da/nu pentru a determina acest
lucru. “Cuptorul este la temperatura potrivită?” Un termostat va furniza răspunsul (da sau
nu). Dacă răspunsul este da, atunci prăjitura poate fi introdusă la cuptor. Dacă răspunsul este
nu, algoritmul va mai aștepta o perioadă și va pune din nou întrebarea.

4
Elemente de programare
Introducere în Python
Corneliu Agapi

1.2 Metode de reprezentare a algoritmilor

Concepte
2 tehnici care îi ajută pe programatori în descrierea algoritmilor sunt pseudocodul și
schemele logice (flowchart). Acestea sunt utilizate pentru reprezentarea secvenței de pași
din cadrul unui algoritm. Algoritmii exprimați în pseudocod sau sub forma schemelor logice
sunt rareori suficient de preciși pentru a putea fi utilizați de un computer, dar prezintă o
serie de pași suficient de în detaliu astfel încât un programator să poată înțelege modul în
care ar trebui să funcționeze algoritmul respectiv.
Pseudocod:
Un pseudocod reprezintă o modalitate informală de reprezentare a unui algoritm, utilizând
instrucțiuni scrise într-un limbaj natural, ca de exemplu engleza. Pașii din cadrul
algoritmului sunt scriși sub forma unei secvențe de instrucțiuni. Un algoritm scris ca
pseudocod este destinat mai curând să fie citit de oameni decât de un computer.
Pseudocodul arată ca un cod în care programul va fi scris, însă nu este atât de precis. Dacă
pseudocodul poate fi înțeles, atunci următorul pas este scrierea efectivă a codului din
program.
Un algoritm pentru perierea dinților, scris în pseudocod, ar putea arăta așa:
Puneți pastă pe periuță
Periați dinții din dreapta sus
Periați dinții din dreapta jos
Periați dinții din stânga sus
Periați dinții din stânga jos
STOP
Schemă logică (flowchart)

Schemă logică reprezintă o modalitate grafică de reprezentare a unui algoritm. Schemele


logice ilustrează o serie de pași simpli folosind săgeți care să indice progresul de la un pas la
altul. Pașii sunt reprezentați utilizând blocuri de text de diverse forme. O schemă logică
reprezintă un instrument fundamental utilizat în dezvoltarea unui program. Ea permite
programatorilor să evidențieze, pas cu pas, cum doresc ei să rezolve o problemă sau cum și-
ar dori să funcționeze un program.
Algoritmul pentru perierea dinților ar putea fi reprezentat și sub forma unei scheme logice:

5
Elemente de programare
Introducere în Python
Corneliu Agapi

6
Elemente de programare
Introducere în Python
Corneliu Agapi

1.3 Scheme logice

Mai jos sunt prezentate câteva forme de blocuri utilizate în cadrul unei scheme logice:

Blocurile reprezintă următoarele:


Start sau Stop
Algoritmul pornește de la caseta Start și rulează până ajunge la caseta Stop.
Proces
Aceste blocuri conțin instrucțiuni simple pentru a executa o acțiune, cum ar fi adunarea a 2
numere sau căutarea unui cuvânt în dicționar.
Intrare sau ieșire
Aceste blocuri sunt destinate interacțiunii cu lumea exterioară computerului. Spre exemplu,
o intrare ar putea fi de la un senzor de temperatură. O ieșire ar putea fi o acțiune precum
aprinderea sau stingerea unei lumini.
Decizie
Blocurile de decizie permit alegeri alternative privind pașii următori pe care algoritmul
trebuie să îi execute. Ele de obicei conțin o întrebare cu 2 variante de răspuns: da și nu. Dacă
răspunsul este ‘da’ se urmează un anumit scenariu. Dacă răspunsul este ‘nu’, se urmează alt
scenariu. Aceasta este metoda prin care algoritmii pot merge dincolo de secvențele simple
de pași.
Conectarea blocurilor
Există încă 2 simboluri adiționale în cadrul unei scheme logice:

Săgețile și conectorii sunt folosiți pentru a conecta blocurile din cadrul unei scheme logice.

7
Elemente de programare
Introducere în Python
Corneliu Agapi

Săgeată
O linie direcțională desenată pentru a conecta 2 blocuri în cadrul unei scheme logice.
Această săgeată indică direcția de urmat în cadrul unui algoritm. De obicei, acestea sunt
denumite linii de flux. De exemplu, instrucțiunile din cadrul unei secvențe conțin săgeți între
ele.
Conector
Un mic cerc în cadrul unei scheme logice este utilizat pentru a conecta două linii de flux între
ele. El indică un salt de la un punct din proces la altul, ca de exemplu atunci când se răspunde
la o întrebare “Da/Nu”.
Pași
Exemplu: Schemă logică pentru 'Trucul Magic 347347'
Aceasta este schema logică pentru un truc magic cu numere. Ea ilustrează o simplă secvență
de instrucțiuni, fără blocuri de decizie. Se pornește procesul de la blocul Start și se continuă
urmând liniile de flux, executând instrucțiunile din fiecare bloc, până se ajunge la blocul Stop.

8
Elemente de programare
Introducere în Python
Corneliu Agapi

Exemplu: Schemă logică pentru coacerea unei prăjituri


Această schemă logică reprezintă un algoritm de coacere a unei prăjituri. Ea conține un bloc
de decizie. Acesta determină dacă prăjitura poate fi scoasă din cuptor sau, dacă nu, îl
instruiește pe bucătar să aștepte până când prăjitura este gata și poate fi scoasă din cuptor.
“Prăjitura este coaptă?” reprezintă o dată de intrare în cadrul algoritmului și este
reprezentată printr-un bloc de intrare/ieșire.

9
Elemente de programare
Introducere în Python
Corneliu Agapi

Exemplu: Schemă logică pentru alegerea unui joc pe telefonul mobil


Această schemă logică arată secvența de acțiuni pentru a alege un joc pe telefonul mobil.
Fiecare bloc în formă de romb conține câte o întrebare. Răspunsul la întrebare poate fi da
sau nu. Răspunsul determină ce bloc urmează.

10
Elemente de programare
Introducere în Python
Corneliu Agapi

Exemplu: Schemă logică pentru trezirea dimineața


Creați o schemă logică pentru a vă trezi dimineața, a lua micul dejun și a pleca la școală.

INDICII:
1. Porniți cu o secvență de acțiuni și scrieți acei pași ca pseucocod, sub forma unei liste
numerotate.
2. Luați anumiți pași și descompuneți-I în pași mai mici. De exemplu, dacă aveți un pas
numit ‘pregătește micul dejun’ – acesta poate fi divizat în pași mai mici precum “pune
pâinea în prăjitor”.
3. Reprezentați această secvență mai detaliată sub forma unei scheme logice.
4. Faceți schema logică mai interesantă prin introducerea variațiilor. De exemplu, cum
afectează vremea drumul către școală? Variațiile pot depinde de întrebări precum:
 Plouă?
 Întârzii la școală?
5. Adăugați blocuri de decizie pentru fiecare dintre aceste întrebări, cu diferiți pași dacă
răspunsul este da sau nu.

1.4 Pseudocod

În loc să creați o schemă logică, un algoritm poate fi reprezentat în pseudocod.


Pseudocod reprezintă o modalitate de a scrie în mod informal modul de operare al unui
algoritm. El combină limbajul natural informal (e.g. Engleza) cu porțiuni din structura
limbajelor de programare.
Pași
Exemplu: Pseudocod pentru 'Trucul Magic' 347347
Schema logică pentru trucul numeric magic ar putea fi scrisă sub formă de pseudocod astfel:
Gândiți-vă la un număr de 3 cifre precum 347
Scrieți numărul de 2 ori pentru a obține un număr de 6 cifre (ex: 347347)
Împărțiți-l la 13
Împărțiți-l la 11
Împărțiți-l la 7
Ar trebui să obțineți numărul ales inițial.
STOP
Exemplu: Pseudocod pentru coacerea unei prăjituri
Pseudocodul pentru coacerea unei prăjituri este prezentat mai jos:
Încălziți cuptorul la 1800C
Amestecați ingredientele

11
Elemente de programare
Introducere în Python
Corneliu Agapi

Introduceți prăjitura în cuptor


Verificați dacă prăjitura este coaptă sau nu
Așteptați
Scoateți prăjitura din cuptor
STOP
Pseudocodul este scris utilizând structura și anumite convenții din limbajele de programare.
Cuvântul ‘Așteptați’ este indentat, ceea ce indică că această acțiune are loc doar dacă
prăjitura nu este coaptă.

1.5 Remedierea erorilor din algoritmi

La scrierea algoritmilor, este ușor să faceți greșeli precum omiterea anumitor pași, așezarea
pașilor într-o ordine greșită sau efectuarea de decizii incorecte. Aceste erori trebuie
corectate.
Regăsiți mai jos câteva erori și modul în care le puteți remedia.
1. Secvență incorectă de instrucțiuni
Scrierea instrucțiunilor într-o ordine greșită poartă numele de secvență incorectă.
Iată mai jos un algoritm pentru perierea dinților, scris în pseudocod. Instrucțiunile sunt într-
o ordine greșită. Algoritmul poate fi reparat prin mutarea acțiunii ‘Pune pastă pe periuță’ în
capul listei.
Perie dinții din dreapta sus
Perie dinții din dreapta jos
Perie dinții din stânga sus
Perie dinții din stânga jos
Pune pastă pe periuță
STOP
2. Rezultat incorect
Iată mai jos un algoritm pentru coacerea unei prăjituri și scoaterea ei din cuptor doar atunci
când este coaptă și nu înainte.
Încălziți cuptorul la 1800C
Amestecați ingredientele
Introduceți prăjitura în cuptor
Prăjitura este coaptă?
Așteptați

12
Elemente de programare
Introducere în Python
Corneliu Agapi

Scoateți prăjitura din cuptor


STOP
Decizia de a aștepta ar putea fi greșită întrucât nu există niciun test de verificare a gradului
de coacere a prăjiturii. Pentru a corecta un posibil rezultat incorect, este necesară o linie în
plus în cadrul pseudocodului:
Încălziți cuptorul la 1800C
Amestecați ingredientele
Introduceți prăjitura în cuptor
Testați cu furculița
Prăjitura este coaptă?
Așteptați
Scoateți prăjitura din cuptor
STOP
3. Lipsa unui element din program
Iată mai jos un algoritm pentru coacerea unei prăjituri, din care lipsesc anumiți pași
importanți.
Încălziți cuptorul la 1800C.
Așteptați să se încingă cuptorul.
Scoateți prăjitura din cuptor.
STOP
Algoritmul poate fi remediat prin adăugarea pașilor lipsă:
Încălziți cuptorul la 1800C.
Amestecați ingredientele
Puneți ingredientele în tava de copt
Așteptați să se încingă cuptorul
Introduceți prăjitura în cuptor
Așteptați să se coacă prăjitura
Scoateți prăjitura din cuptor
STOP

13
Elemente de programare
Introducere în Python
Corneliu Agapi

14
Elemente de programare
Introducere în Python
Corneliu Agapi

PYTHON

15
Elemente de programare
Introducere în Python
Corneliu Agapi

Capitolul I. Introducere în Python

Python este un limbaj de programare de nivel înalt.


Un limbaj de programare este modul în care un programator poate scrie instrucțiuni
pe care computerul să le poate urma atunci când rezolvă o problemă sau algoritm. Python a
fost numit după grupul de comedie Monty Python Flying Circus, care a fost popular în Marea
Britanie între 1969 și 1974.
Astăzi sunt zeci, dacă nu sute de limbaje de programare utilizate și toate sunt diferite
în multe privințe. Python a devenit unul dintre cele mai populare din multe motive. Primul
dintre ele este faptul că este un limbaj foarte complex, care alimentează algoritmii unora
dintre cele mai mari companii globale, cum ar fi Google și Yahoo, și site-uri web de top,
inclusiv Reddit.
În ciuda faptului că este foarte complex, Python este un limbaj foarte ușor de învățat.
Să înveți să devii programator nu este atât de greu ca înainte; în fapt, veți găsi că este
distractiv și foarte captivant.
Cel mai bun și frumos lucru când scrieți programe de calculator cu limbajul Python
este că, în comparație cu alte limbaje de programare orientate pe obiecte utilizate în prezent,
cum ar fi C, C++, C# și Java, Python nu a fost proiectat doar pentru rezultatul final, aventura
este prezentă și în procesul de scriere a codului. Există 20 de principii de bază care au
influențat proiectarea și crearea limbajului de programare Python, numit Zen-ul Python,
dintre care 19 sunt înscrise. Iată primele 10 principii ale Python pentru a vă ajuta să
înțelegeți de ce limbajul a fost creat așa cum este:

1. Frumos este mai bun decât urât.


2. Explicit este mai bine decât implicit.
3. Simplu este mai bine decât complex.
4. Complex este mai bine decât complicat.
5. Flat este mai bine decât imbricat.
6. Rar este mai bine decât dens.
7. Lizibilitatea contează.
8. Cazurile speciale nu sunt suficient de speciale pentru a încălca regulile.
9. Practicitatea bate puritatea.
10. Erorile nu ar trebui să treacă niciodată în tăcere.

16
Elemente de programare
Introducere în Python
Corneliu Agapi

În timp ce această carte nu te transformă magic într-un programator, gata să câștigi


bani mari, vine ca un ajutor binevenit, fie că vrei să urmezi programarea computerelor
pentru a-ți extinde cariera, fie pentru a începe una nouă sau doar pentru a ști cum să-ți
construiești propriile programe.
Având în vedere că „distracția” este un mare motivator, s-au depus toate eforturile
pentru ca procesul de învățare folosind această carte să fie captivant și plăcut pentru toți
utilizatorii - de la programatorii începători până la dezvoltatorii experimentați care doresc
să adauge Python la bagajul lor de limbaje de programare pe care le-au stăpânit. Pe măsură
ce vă alăturați sutelor de mii de alți cursanți care se străduiesc să stăpânească Python, cel
mai bun sfat cu care vă pot lăsa este acest citat grozav:
„ În multe feluri, (Python) este un plictisitor limbaj, împrumutând concepte și
stiluri vechi solide din multe alte limbi: sintaxă plictisitoare, semantică
nesurprinzătoare, puține constrângeri automate etc. Dar acesta este unul dintre
lucrurile care îmi plac la Python.”
- Tim Petes
De ce Python?

Dacă ați căutat bine înainte de a alege să studiați această carte, probabil ați descoperit
că Python este de departe cel mai citit și cel mai utilizat limbaj de programare la nivel înalt
în prezent. Acest lucru nu este doar pentru că pune accent pe lizibilitatea codului și sintaxa
simplă sau pentru că necesită mai puține linii de cod pentru a crea un program în comparație
cu alte limbi; în continuare vă prezentăm primele șapte motive pentru care ar trebui să
vedeți decizia dvs. de a face studii de programare Python până la sfârșit:

1. Python deschide oportunități nesfârșite pentru programatori.


Dezvoltatorii Python fac cu precădere freelancing sau ocupă locuri de muncă permanente,
deoarece limbajul este foarte popular în rândul companiilor și organizațiilor. O dată ce te
simți confortabil cu programarea în Python, vei fi într-o poziție excelentă pentru a lua în
considerare oportunități de angajare și chiar mari corporații care te plătesc pentru a aplica
conceptele pe care le înveți în această carte.

2. Python este un limbaj preferat pentru dezvoltarea web.


Numărul de site-uri web de pe World Wide Web se apropie de pragul de 1 miliard și o
imagine a acestei evoluții este sfera în creștere a Python în dezvoltarea web. Python aduce
multă flexibilitate și o gamă largă de framework-uri gata de utilizare (cum ar fi Django,
Zope2, Pylons, Grok și web.py) care revoluționează modul în care sunt construite front-end-
ul și back-end-ul site-urilor web. A învăța să creați site-uri web în Python este cel mai bun
mod de a vă poziționa pe partea dreaptă a istoriei.

17
Elemente de programare
Introducere în Python
Corneliu Agapi

3. Învățarea gândirii computaționale cu Python este ușoară.


Python este un limbaj de programare de nivel înalt care se citește ca limba engleză obișnuită.
Din această cauză, multor cursanți vorbitori de engleză le este foarte ușor să înțeleagă
sintaxa și cum să folosească diferitele componente ale limbajului cu o complexitate minimă.
Dacă sunteți începător, veți fi surprins cât de ușor este să spuneți computerului ce să facă în
Python și să gândiți în moduri care vă ajută să conceptualizați codul computerului.

4. Python are o comunitate online bogată și vibrantă.


Pe măsură ce intri în lumea programării, vei descoperi destul de curând cât de importantă
este comunitatea de dezvoltatori pentru limbaj și pentru cursanții săi. Comunitatea Python
este a 5-a ca mărime în comunitatea StackOverflow și a patra cea mai folosită limbă pe
Github. Când te aventurezi în spațiul cibernetic pentru a interacționa cu alți cursanți și cu
profesioniști, vei fi surprins de numărul imens de oameni gata să te ajute să înveți,
răspunzând la întrebări și verificându-ți codul.

5. Python are una dintre cele mai mature biblioteci de pachete.


Cea mai mare parte a programării, după cum veți descoperi în curând, este repetitivă. Când
începeți să scrieți cod la scară comercială, veți aprecia faptul că Python este susținut de
depozite precum PyPI cu sute de mii de module și scripturi gratuite pe care le puteți prelua
și utiliza în codul dvs. Aceste module și scripturi aduc funcționalități pre-ambalate în mediul
dvs. Python pentru a rezolva o multitudine de probleme pe care altfel ar trebui să le rezolvați
una câte una. Cu Python, nu este nevoie să reinventăm roata.

6. Python este multi-platformă și open source.


Python există de peste 20 de ani și, de-a lungul acestei perioade, a fost dezvoltat ca un
software multiplatform și open source care rulează pe Linux, Windows și MacOS. În plus,
limbajul este susținut de peste 2 decenii de îndreptare și eliminarea erorilor, ceea ce l-a
transformat într-o casă de putere care face ca codul să ruleze așa cum l-ați dorit pe orice
platformă.

7. Învățarea Python este pasul ideal către alte limbaje de programare.


Nu există astăzi multe limbi care să ofere simplitatea și versatilitatea Python, dar diferiți
oameni își aleg limbile de specialitate pentru propriile motive. Chiar dacă intenționați să vă
specializați într-un alt limbaj de programare de nivel înalt, de ex. C#, C++ sau Java, Python
este un limbaj grozav de învățat mai întâi înainte de a vă diversifica într-o altă limbă.

18
Elemente de programare
Introducere în Python
Corneliu Agapi

Instalarea Python

Pentru a începe să scrieți scripturi Python și să le executați pe computerul dvs.,


trebuie mai întâi să configurați software-ul potrivit pe computer. Nimic nu este complicat în
această etapă, atâta timp cât urmați pașii potriviți. Dacă știți deja cum funcționează
computerul dvs., cum să navigați prin structura de stocare a computerului, să descărcați
software și fișiere și să instalați programe, acesta ar trebui să fie un proces simplu. Dacă aveți
deja instalat Python 3 pe computer, puteți sări peste această secțiune și să continuați la
secțiunea următoare, shell-ul Python.
Descărcați software-ul potrivit
Puteți descărca instrumentele oficiale de programare Python de pe python.org. În browserul
computerului dvs., accesați și obțineți cea mai recentă versiune de Python (ar trebui să fie
versiunea 3).
Înainte de a începe instalarea, luați ceva timp pentru a citi resursele de pe
https://wiki.python.org/moin/BeginnersGuide și asigurați-vă că cunoașteți sistemul de
operare (și versiunea) computerului dvs. și dacă este pe 32 de biți sau pe 64 de biți. Acest
lucru este important pentru a vă asigura că descărcați software-ul potrivit.

Pagina de descărcare python.org/downloads/

La momentul scrierii acestei cărți, cea mai nouă versiune de Python este Python 3.10.1. Dacă
nu sunteți sigur ce versiune să descărcați, faceți clic pe numele sistemului de operare pentru
a accesa mai multe opțiuni.
Instalare sub Windows
Instalarea este destul de simplă pe un computer cu Windows 10 sau 7. Pur și simplu
descărcați versiunea corectă de Python și deschideți asistentul de instalare când descărcarea
este finalizată. Când instalarea este completă, asigurați-vă că bifați opțiunea „Adăugați
Python3.6 la PATH” în ultimul pas al instalării.
Dacă instalarea a mers bine, puteți lansa Python din meniul Start Windows.
19
Elemente de programare
Introducere în Python
Corneliu Agapi

Comanda rapidă Python Integrated Development Environment (IDLE) este plasată aici:
Start➤Programs➤Python2➤IDLE(Python GUI).

Linux și UNIX
Pentru Linux și majoritatea sistemelor bazate pe Unix, cum ar fi Mac OSX, interpreterul de
Python vine preîncărcat cu sistemul de operare. Cu toate acestea, a ta este cel mai probabil o
versiune mai veche a Python (versiunea 2) pe care nu o vom folosi în acest ghid. Pentru a afla
versiunea Python Interpreter pe sistemul dvs., introduceți următoarea comandă pe terminal:

$ python
Această comandă ar trebui să inițieze interpretul interactiv Python, care va afișa versiunea
și alte detalii. Pentru a afla dacă Python 3 este instalat, introduceți comanda:

$ python3
Probabil veți primi o eroare „bash: python: command not found” dacă versiunea 3 a
interpretorului Python nu este instalată pe computer. Aceasta înseamnă că va trebui să îl
descărcați și să îl instalați singur, dar nu uitați să verificați opțiunea „Adăugați Python3.6 la
PATH” în ultimul pas de instalare, când instalarea este finalizată. Folosiți managerul de
pachete dacă sunteți pe un Linux bazat pe Debian.
Dacă aveți un Mac, deschideți aplicația terminal și introduceți comanda „python” pentru a o
porni. Dacă este instalată versiunea mai veche 2.x, nu o modificați, deoarece este folosită de
sistemul de operare în moduri diferite. În schimb, puteți descărca cea mai nouă versiune de
pe python.org/downloads/ sau puteți utiliza instrumentele de distribuție Fink
(http://finkproject.org) sau MacPorts (http://macports.org).

Directorul de instalare și fișierele cu exerciții

Rețineți folderul de instalare al interpretului dvs. Python, deoarece ne vom referi


foarte mult la acel director în acest curs. Această carte vine cu un set de fișiere python script;
ar trebui să extrageți folderul din folderul de instalare al lui Python pentru a-l face ușor
accesibil din linia de comandă. Dacă sunteți utilizator Windows, calea către directorul de
exerciții ar trebui să semene cu aceasta: C:\Python36-21\ExFiles\
De asemenea, ar trebui să faceți din asta un obicei pentru a salva fișierele de script cu
extensia .py în această locație sau în o locație similară pentru un acces și o execuție mai
ușoare.

20
Elemente de programare
Introducere în Python
Corneliu Agapi

Consola Python

Oferă un mediu de programare cu interfață grafică cu utilizatorul (PythonIDLE) a


cărui comandă rapidă este plasată pe desktop, meniul Start sau aplicația de andocare. Acest
mediu include un editor de text în care vă puteți scrie codul.
Când configurați corect Interpretul Python, ar trebui să puteți rula orice fișier Python
cu extensia .py în orice locație din linia de comandă. Aceasta este abordarea pe care o vom
folosi în această carte. Credem că cel mai bine este să înveți folosind terminalul (linia de
comandă) și un editor de text la alegerea ta, deoarece te ajută să stăpânești conceptele și
chiar să le exersezi cu distrageri minime.
De exemplu, dacă ai extras exercițiile zip care însoțesc această carte în directorul /ExFiles/
din folderul de instalare Python, ar trebui să puteți rula primul script de exercițiu cu numele
Ex1.py tastând:

$ python /ExFiles/Ex1.py
Dacă sunteți un utilizator Mac sau Linux, în funcție de versiunile instalate de
Pythoninterpreter, poate fi necesar să utilizați comanda:

$ python3 /ExFiles/Ex1.py

Instalați un editor de text

Codul Python este introdus într-un editor de text simplu și salvat într-un fișier cu
extensia .py. Există un număr destul de mare de editoare de text populare printre
programatori pe care le puteți descărca și utiliza gratuit. Procesoarele de text precum MS
Word sau WPSWriter nu funcționează în crearea de scripturi deoarece introduc caractere
speciale în cod care interferează cu execuția acestuia. Unele dintre editoarele de text de top
pe care ar trebui să le luați în considerare sunt:
 Notepad++Text
 Wrangler (Mac)
 Sublime Text
 Vim, Atom
Amintiți-vă că, atunci când Python 3 este configurat pe computer, trebuie să vă dați
seama ce comandă utilizați pe linia de comandă pentru a apela interpretul (python pentru
windows), sau python3 pentru sistemele bazate pe Linux și UNIX cu Python 2.xinstalat).
Această carte presupune că utilizați comanda python pe linia de comandă pentru a inițializa
interpretul. Dacă nu este cazul computerului dvs., înlocuiți-l pur și simplu cu python3 pentru
a inițializa interpretul python. După ce stăpâniți acest lucru și aveți instalat un editor de text,
sunteți setat și gata să deveniți un programator în devenire.

21
Elemente de programare
Introducere în Python
Corneliu Agapi

Capitolul 2: “Hello World” și elementele de bază ale Python

Python are foarte multe asemănări cu alte limbaje de programare orientate pe obiecte, în
special Perl, C, C++ și Java.

Modul de programare interactiv

În capul listei de asemănări pe care Python le împărtășește cu alte programe de top


este modul de programare interactivă. Aceasta înseamnă pur și simplu că tu poți alege
interpreterul Python fără a folosi un fișier de tipscript .
În acest mod, puteți executa comenzi direct pe interpret. Pentru de exemplu, când
sunteți pe interpretul Python, introduceți următorul cod și apasa Enter:

După cum puteți vedea, puteți executa comenzi pe interpretul Python fără salvarea
sintaxei într-un fișier de tip script. Interpretul Python poate efectua operații aritmetice și
alte comenzi pe care le introduceți direct în terminal. Rețineți, totuși, că în acest mod, nimic
nu va fi salvat permanent.

Modul de programare script

Pentru restul acestei cărți, vom folosi modul de programare script pentru a executa
instrucțiuni de program și comenzi. Ce înseamnă asta, este că vom scrie cod într-un fișier
script (în acest caz un fișier cu extensia .py), apoi salvați-l și rulați-l din fișierul interpret.
Crearea fișierului script HelloWorld.py
Porniți editorul de text și introduceți următorul cod exact așa cum apare:
Ex1: Hello World
print ("Hello World!")
print ('I am now a Python programmer!')

22
Elemente de programare
Introducere în Python
Corneliu Agapi

Acesta este un script Python simplu cu două linii. Puteți salva acest script ca
„HelloWorld.py” în locația preferată (de preferință într-un director din directorul unde
Python este instalat sau undeva ușor accesibil, cum ar fi desktopul).
Amintiți-vă numele exact al fișierului, deoarece Python face distincție între majuscule
și minuscule și HelloWorld.py nu este același lucru cu helloworld.py. Rulați scriptul salvat
din linia de comandă (terminal), așa cum este explicat mai jos.
Când salvați un script Python, nu uitați să includeți extensia .py la sfârşitul numelui
fişierului.
Observație: Acest exercițiu presupune, de asemenea, că ați setat deja variabila PATH în dvs
computer (vezi instrucțiunile de instalare). Scriptul demonstrativ pentru acest exercițiu este
salvat ca Ex1.py.
Rularea fișierului script HelloWorld.py
Acum încercați să rulați scriptul HelloWorld.py din linia de comandă (terminal) urmând
următorii pași:
Când fișierul script Python este salvat, îl puteți rula invocând interpretul Python în locația în
care este stocat fișierul. De exemplu, dacă l-ați salvat în folderul „ExFiles” din directorul de
instalare al lui Python sau pe desktop, și invocați interpretul Python 3 folosind cuvântul cheie
python, comanda dvs. pentru a rula scriptul HelloWorld.py pe terminal (linia de comandă).
arată așa:

python HelloWorld.py
Ce se întâmplă când rulați scriptul salvat? Terminalul afișează textele ați introdus după
cuvântul cheie print și între paranteze și ghilimele? Contează că ați folosit ghilimele simple
('') sau duble ("") ?

23
Elemente de programare
Introducere în Python
Corneliu Agapi

Identificatori în Python
Când scrieți un program în Python, trebuie să vă obișnuiți să folosiți cuvinte rezervate
englezești cu care ești obișnuit în viața de zi cu zi, dar având uneori mici și subtile diferențe
și reguli vizibile. Când dorim să specificăm o variabilă, o clasă, un modul, a funcție sau alt
obiect (pe care le vom afla mai târziu), trebuie să îi atribuim un nume de identificare sau pur
și simplu un identificator.
Identificatorii din Python trebuie să înceapă cu o literă alfabetică (A-Z, a-z) sau o liniuță de
subliniere (_), urmată de alte litere și cifre (0-9) sau liniuțe de subliniere. Nu se poate folosi
semne de punctuație și alte simboluri, de ex. @, #, $, % și altele în cadrul identificatorului.
De asemenea, Python este sensibil la majuscule, litere mari și litere mici. De exemplu, Hello
nu este același lucru cu hello. Următoarele convenții sunt foarte importante și recunoscute
și totodată folosite pentru a numi identificatorii în Python, de care ar trebui să ținem cont:
 un nume de Clasă trebuie să înceapă cu o literă mare; toți ceilalți identificatori pot
începe cu o literă mică.
 un identificator care începe cu un singur caracter de subliniere indică că
identificatorul este privat de ex. _private.
 un identificator care începe cu două caractere de subliniere este un identificator
privat puternic.
 dacă un identificator se termină cu două caractere de subliniere, atunci este nume
special definit în limbaj.
Cuvinte rezervate
Python are un set de cuvinte rezervate doar interpretului pe care nu le puteți utiliza ca nume
de variabilă, constantă sau orice alt nume de identificare.
Aici este tabelul acestor cuvinte:
and as assert break class
continue def del elif else
except exec finally for from
global if Import in is
lambda not or pass print
raise while return try with
Yield
Tabelul 1: Cuvinte cheie rezervate în Python

24
Elemente de programare
Introducere în Python
Corneliu Agapi

Linii și aliniere(indentare)
În alte limbaje de programare, acoladele ({}) sau parantezele pătrate ([]) sunt utilizate
pentru a grupa blocuri de cod înrudite pentru definirea funcției sau clasei. În Python,
blocurile de cod sunt notate printr-o aliniere(indentare) de linie. Această regulă de aliniere
(indentare) este aplicată rigid și o puteți folosi un tab sau un număr de spații, atâta timp cât
există uniformitate și consecvență în utilizarea lor. Luați în considerare aceste două blocuri
de cod:
if True:
print ("True")
print ("Proceed")
else:
print ("False")
Declarațiile print („True”) și print („Proceed”) sunt indentate cu același număr de spații.
Aceasta înseamnă că formează un bloc.
Notă: Acestea sunt reguli de sintaxă foarte importante, dar nu vă chinuiți să înțelegeți totul
în acest moment. Doar asigurați-vă că știți ce este un bloc de cod și de ce blocurile sunt
importante.

Comentarii în Python
Comentariile dintr-un script Python sunt note lăsate de programator pentru mai târziu sau
pentru alți programatori ca să înțeleagă codul. Comentariile în Python au semnul # la
inceput. Orice lucru dincolo de semnul # până la sfârșitul liniei va fi ignorat de interpret.
print ("Hello World!") # Afișează “ Hello World! ” pe ecran..
# această linie este ignorată de interpreter.
print ('I am now a Python programmer.') # alt comentariu.
Un comentariu poate fi tastat pe o linie nouă sau pe aceeași linie după o expresie sau o
declarație. Nu puteți scrie un comentariu care se întinde pe mai multe rânduri pe Python.

25
Elemente de programare
Introducere în Python
Corneliu Agapi

Citate (Mesaje) în Python


Puteți utiliza ghilimele simple ('), duble (") sau triple (''' sau """) pentru a delimita un șir
literali în Python. Singura regulă este că trebuie să începeți și să terminați cu același tip de
citat pe un șir. Ghilimele triple sunt folosite atunci când șirul de text se întinde pe mai multe
rânduri.
print ('Hello World!') # Double quotation marks.
print ("I am now a Python programmer.") # această linie este ignorată
print ("""I am now a Python programmer.
This means I should be able to create a simple Python
Script and run it with no difficulty.''')

Linii goale
O linie goală este o linie care conține doar spații albe, de obicei inserate în cod în scop estetic
și pentru a menține organizat codul. Interpretul Python ignoră complet o linie goală din
script.
Trebuie să existe o linie goală după un bloc cu mai multe linii pentru a termina afirmație.

26
Elemente de programare
Introducere în Python
Corneliu Agapi

Capitolul 3: Variabile și operatori de bază în Python

Tipuri de variabile în Python


În programarea orientată pe obiecte, o variabilă este un spațiu din memoria computerului
care este rezervată pentru stocarea valorilor de un tip specificat. Când declarați o variabilă
în scriptul dvs. Python, în esență îi cereți interpretului să aloce computerul memorie pentru
tipul de date așteptat și atribuiți acea locație de memorie unui nume. Acest nume este ceea
ce numim un nume de variabilă și i se poate atribui oricare dintre ele următoarele cinci
tipuri de date acceptate de Python:
1. Numeric
2. Caracter
3. Liste
4. Tuple 1 - Listă ordonată de elemente
5. Dicţionar
Vom acoperi fiecare dintre aceste variabile în detaliu în capitolele 3, 4 și 5. Interpretul decide
ce date vor fi stocate în memoria rezervată pe declarația tipului de date. Prin urmare, este
important să specificați tipul de date variabila ce va fi stocat astfel încât interpretul să poată
aloca spaţiu de memorie suficientă.
Declararea unei variabile
Puteți să declarați o variabilă în Python atribuind unui nume de variabilă o valoare. Spre
deosebire de diverse alte limbaje de programare de nivel înalt, cu Python, nu aveți nevoie să
declarați în mod explicit o rezervare de spațiu de memorie, aceasta se întâmplă automat când
o valoare este atribuită variabilei folosind semnul egal (=) numit atribuire operator în
programare.

1 tuplu
În matematică, informatică, lingvistică și filozofie, un tuplu este o listă ordonată de elemente. În teoria
mulțimilor, un n-tuplu este o secvență de elemente, unde n este un întreg nenegativ. Există un singur tuplu 0, o
secvență goală. Un -tuplu este definit inductiv folosind construcția unei perechi ordonate. Tuplurile sunt de
obicei scrise prin listarea elementelor între paranteze „” și separate prin virgule; de exemplu, denotă un 5-
tuplu. Uneori sunt utilizați și alți delimitatori, cum ar fi paranteze pătrate „” sau paranteze unghiulare „”.
Acoladele „{}” nu sunt aproape niciodată folosite pentru tupluri, deoarece sunt notația standard pentru mulțimi.
Tuplurile sunt adesea folosite pentru a descrie alte obiecte matematice, cum ar fi vectorii. În informatică,
tuplurile sunt implementate direct ca tipuri de produse în majoritatea limbajelor de programare funcționale.
Mai frecvent, acestea sunt implementate ca tipuri de înregistrări, în care componentele sunt etichetate în loc să
fie identificate numai prin poziție. Această abordare este folosită și în algebra relațională. Tuplurile sunt, de
asemenea, folosite în legătură cu programarea web-ului semantic cu Resource Description Framework sau
RDF.

27
Elemente de programare
Introducere în Python
Corneliu Agapi

Ex2
Introdu următorul cod în editorul tău și rulează-l din linia de comandă:
name = "Peter"
age = 22
score = 97.21
print (name, "is", age, "years old.")
print (name, "scored", score, "percent.")
Instrucțiunea print este pentru a afișa valorile variabilelor ca dovadă că funcționează. Ce
afișează programul dvs. când rulați scriptul?
În declarația name = „Peter”, operandul „name” din partea stângă a semnul egal este numele
variabilei, în timp ce cel din dreapta, în acest caz „Peter”, este valoarea variabilei.
Puteți vedea că valoarea numelui variabilei este cuprinsă între ghilimele în timp ce valorile
variabilelor vârsta și scorul nu sunt. Nu vă faceți griji pentru asta, vom face uitați-vă de ce în
detaliu atunci când discutați despre tipurile de date șir și numere în următorul capitolul
cărții.
Atribuirea unei singure valori mai multor variabile
Unul dintre lucrurile care fac din Python un limbaj atât de eficient și simplu este că puteți
atribui mai multor variabile o singură valoare într-o singură instrucțiune.
Ex3
x = y = z = 10
print (x)
print (y)
print (z)
Când rulați codul din Ex3, vă veți da seama când valorile variabilelor x, y și z sunt afișate pe
ecran, sunt toate la fel (10). Obiectele întregi x, y și z sunt create în aceeași locație de memorie
atunci când este atribuită lor valoarea 10. Acesta este modul în care asociați o valoare cu mai
multe variabile.
Atribuirea multiplă - mai multor variabile la mai multor valori
Exact așa cum puteți atribui mai multor variabile o valoare folosind o singură instrucțiune în
Python, puteți, de asemenea, să atribuiți mai multe obiecte la mai multe variabile cu ușurință.
Codul tău ar arăta ca Ex4:
Ex4
name, age, score = "Peter", 22, 97.21
print (age, "year old", name, "scored", score, "percent.")
În acest exercițiu, îi atribui aceleași valori pe care le-am folosit în Ex2 variabile, cu excepția
unei singure linii de cod.

28
Elemente de programare
Introducere în Python
Corneliu Agapi

Operatori de bază
Un operator este on construcție utilizată pentru a manipula valoarea unui operand.
Majoritatea operatorilor pe care îi veți întâlni în timp ce învățați Python vor arăta familiari
de la ora de matematică și majoritatea servesc aceluiași scop ca atunci când v-au fost
prezentați la școală.
În expresia 5 + 6, 5 și 6 sunt operanzii și + (plus) este operatorul.
Limbajul Python acceptă șapte tipuri de operatori:
 Operatori aritmetici
 Operatori de atribuire
 Operatori relaționali sau de comparație
 Operatori logici
 Operatori de membru
 Operatori de identitate
 Operatori pe biți
În această carte, vom acoperi o scurtă introducere a primilor șase operatori cu scurte
exemple de scripturi care le pun în practică.

29
Elemente de programare
Introducere în Python
Corneliu Agapi

1. Operatori aritmetici
După cum sugerează numele, operatorii aritmetici sunt aceeași pe care i-ați învățat la
matematică, deși cu câteva modificări. Ei sunt:
Operator Nume Funcție
+ Adunarea Adună valorile ambilor operanzi.
- Scăderea Scade valoarea operandului drept din valoarea operandului din stânga.
* Înmulțirea Înmulțește valorile ambilor operanzi.
/ Împărțirea Împarte valoarea operandului din stânga la valoarea operandului drept.
% Mod Restul împărțirii operandului din stânga la operandul drept.
// Div Împărțirea întreagă dintre operandul stâng și cel drept
** Exp Execută calcul exponențial
Tabelul 2: Operatori aritmetici în Python
Ex5
x = 12
y=8
print ("When x = 12 and y = 8:")
z=x+y
print ("1: x + y is", z)
z=x-y
print ("2: x - y is", z)
z=x*y
print ("3: x * b is", z)
z=x/y
print ("4: x / b is ", z)
z=x%y
print ("5: x % y is ", z)
a, b = 3, 2
print ("Given a, b = 3, 2:")
c = a**b
print ("1: a**b is ", c)
c = a//b
print ("2: a//b is ", c)

30
Elemente de programare
Introducere în Python
Corneliu Agapi

2. Operatori de atribuire
Operatorii de atribuire din Python fac exact ceea ce sugerează numele: atribuie valori. Un
operator de atribuire va atribui valoarea operandului din dreapta la stânga operand.
Symbol Nume Funcție
= Egal Atribuie valoarea operandului din dreapta la operandul din stânga.
+= AddAND Adaugă valoarea operandului din dreapta la operandul din stânga.
-= Subtract AND Scade valoarea operandului dreapta din operandul din stânga.
*= Multiply AND Înmulțirea ambilor operanzi, rezultatul atribuit operandului stânga.
/= Divide AND Împarte ambii operanzi și rezultatul îl atribuie operandului stânga.
%= Modulus AND Restul împărțirii celor doi operanzi îl atribuie operandului din stânga.
**= ExponentAND Ridicăm la putere și valoarea o atribuim operandului din stânga.
//= Floor Division Împărțirea întreagă și valoarea o atribuim operandului din stânga.
Tabelul 3: Operatori de atribuire în Python
Ex6
x = 10
y=5
print ("If x = 10 and y = 5:")
z=x+y
print ("1: x + y is", z)
z += x
print ("2: += x is", z)
z *= x
print ("3: *= x is", z)
z /= x
print ("4: /= x is", z)
a=2
print ("Given a, x = 2, 10:")
a %= x
print ("5: a %= x is", a)
a **= x
print ("6: **= x is", z)
a //= x
print ("7: //= x is", a)

31
Elemente de programare
Introducere în Python
Corneliu Agapi

3. Operatori relaționali (de comparație).


Un operator de comparație pur și simplu compară valoarea operandului din stânga cu
valoarea operandului din dreapta și determină modul în care aceștia se raportează.
Operator Nume Funcție
Condiția devine adevărată dacă valoarea din stânga operandul este egal
== Egal cu
cu valoarea operandului drept.
Condiția devine adevărată dacă valoarea stângă a operandul nu este
!= Diferit
egală cu valoarea operandului din partea dreaptă.
Condiția devine adevărată dacă valoarea operandului din partea stângă
> Mai mare decât
este mai mare decât valoarea operandului din partea dreaptă.
Condiția devine adevărată dacă valoarea operandului din partea stângă
< Mai mic decât este mai mică decât valoarea operandului din partea dreaptă.
Mai mare sau Condiția devine adevărată dacă valoarea operandului din partea stângă
>=
egal decât este mai mare sau egală decât valoarea operandului din partea dreaptă.
Mai mică sau Condiția devine adevărată dacă valoarea operandului din partea stângă
<=
egal decât este mai mică sau egală decât valoarea operandului din partea dreaptă.
Tabelul 4: Operatori relaționali (comparație) în Python
Ex7
number1 = 100 > 50;
number2 = 100 < 50;
number3 = 100 == 50;
number4 = 100 != 50;
number5 = 100 >= 50;
number6 = 100 <= 50;
print ("1. Value of number1:", number1)
print ("2. Value of number2:", number2)
print ("3. Value of number3:", number3)
print ("4. Value of number4:", number4)
print ("5. Value of number5:", number5)
print ("6. Value of number6:", number6)

32
Elemente de programare
Introducere în Python
Corneliu Agapi

4. Operatori logici
Numiți și operatori booleeni, operatorii logici sunt instrucțiuni care evaluează la oricare
dintre cele două condiții booleene: Adevărat sau Fals. Cuvântul cheie NOT introdus ca
cuvânt cheie rezervat mai devreme inversează un tip boolean, de la adevărat la fals și invers.
Operator Funcție
and Returnează TRUE dacă ambii operatori sunt TRUE
or Returnează TRUE dacă oricare din operatori este TRUE
not Returnează TRUE dacă operatorul este FALSE și FALSE dacă operatorul este TRUE.
Tabelul 5: Operatori logici în Python
Ex8
x = True
y = False
print ("x and y is", x and y)
print ("x or y is", x or y)
print ("Not x is", not x)

5. Operatori de apartenență
Cei doi operatori de apartenență din Python verifică prezența operandului într-o succesiune
de valori precum șiruri de caractere (caractere alfanumerice), liste sau tupluri.
Operator Funcție
in Returnează TRUE dacă operandul este găsit într-o secvență specificată, FALSE în caz contrar
not in Returnează TRUE dacă operandul nu este în listă, FALSE în caz contrar.
Tabelul 6: Operatori de apartenență în Python
Ex9
x = "Python Programming"
y = {1:"h", 2:"m"}
print ("y" in x)
print ("o" not in x)
print (1 in y)
print ("a" in y)

33
Elemente de programare
Introducere în Python
Corneliu Agapi

6. Operatori de identitate
Un operator de identitate compară locațiile de memorie a doi operanzi. Operația se referă la
valoarea celor doi operanzi:
Operator Funcție
is Returnează TRUE dacă ambii operanzi sunt identici, FALSE în caz contrar.
is not Returnează FALSE dacă ambii operanzi sunt identici, TRUE în caz contrar.
Tabelul 7: Operatori de identitate în Python
Ex10
a = 10
a1 = 10
b = "Holla"
b1 = "holla"
c = [1,2,3]
c1 = [1,2,3]
print(a is a1)
print(b is b1)
print(c is not c1)
7. Operatori pe biți
Operatorii bit cu bit sunt utilizați la operații bit-by-bit care execută operațiuni pe operanzi
în formă binară.
Operator Nume Funcție
& AND Rezultatul este binar ce copiază bitul dacă este găsit în ambii operatori
| OR Rezultatul este binar ce copiază bitul dacă este doar într-un operator
~ NOT Binar ce face 0 dacă găsește 1 și 1 dacă regăsește 0 .
^ XOR Rezultatul este binar ce copiază bitul dacă este doar într-un operator.
Rezultatul este binar obținut prin mutarea spre stânga a biților cu un
>> Mutare dreapta
număr egal cu cel de=al doilea operand.
Rezultatul este binar obținut prin mutarea spre stânga a biților cu un
<< Mutare stânga număr egal cu cel de=al doilea operand.
Tabelul 8: Operatori pe biți în Python
0 & 0 == 0 ; 0 & 1 == 0 ; 1 & 0 == 0 ;1 & 1 == 1
Ex. 13 & 151
0000000000001101& 0000000010010111
Rezultatul este 0000000000000101 adică 5.
Ex. 13<<3
Reprezentarea lui 13 este 0000000000001101. Deplasând toți biții spre stânga cu 3 poziții
se obține: 0000000001101000, adică 104.
Să observăm că 104 este egal cu 13 * 23. În general n << k este n * 2k.

34
Elemente de programare
Introducere în Python
Corneliu Agapi

Ordinea executării operatorilor în Python


Interpretul Python urmează o ordine foarte strictă de execuție atunci când este prezent cu
operașii multiple. Tabelul de mai jos rezumă toate operațiunile în ordine de prioritate de la
cel mai mare la cel mai mic.

Order Operație Funcție


1 () Operațiile între paranteze sunt executate primele
2 ** Funcția exponențială
3 ~+- Complementul, plus, minus unar
4 * / % // Înmulțire, împărțire, modulo, împărțire întreagă
5 +- Adunare și scădere
6 >> << Mutare stânga, dreapta la operații pe biți
7 & AND la operații pe biți
8 |^ OR sau exclusive OR la operații pe biți
9 <=< > >= Operatori relaționali de comparație
10 <>==!= Operatori relaționali
= %= /= //= -= +=
11 Operatori de atribuire
*= **=
12 is is not Operatori de identitate
13 in not in Operatori de apartenență
14 Not or and Operatori logici
Tabelul 9: Ordinea executării operațiilor în Python

35
Elemente de programare
Introducere în Python
Corneliu Agapi

Capitolul 4: Lucrul cu șiruri și numere

În capitolul 2, am atins ușor cele cinci tipuri de date de bază pe care le veți avea învățând să
lucrezi cu ele în cursul acestei cărți. Până la sfârșitul acestui capitol, tu va putea lucra cu cele
mai populare două tipuri de date: numere și șiruri.

Șiruri în Python
Primul tip de date pe care l-am întâlnit în primul exercițiu al acestei cărți. Este un succesiune
de caractere, inclusiv simboluri și caractere alfanumerice. În capitolul 2, ați învățat că puteți
utiliza un simplu ('), un dublu (") sau triplu (''' sau """) ghilimele pentru a indica un șir.
Dacă ai testat ceea ce ai învățat până acum, și sunt sigur că ai făcut-o ai creat
nenumărate variabile de tip șir în scripturile dvs. Cu toate acestea, până acum avem doar
explicat cum să le afișați folosind metoda print. În această secțiune, vom face o serie de alte
lucruri cu șiruri.

Crearea unui șir


Creați un șir prin includerea caracterelor între ghilimele și atribuindu-i a numele variabilei.
În primul exercițiu, am creat un obiect șir și l-am afișat conținutul de pe ecran. În Ex2, am
creat un obiect șir numit nume cu valoarea „Peter”.
De asemenea, puteți crea un obiect șir prin formatarea intrării unui utilizator folosind
metoda str() (vom descoperi acest lucru mai târziu). În Ex11 de mai jos, de exemplu,
utilizatorul va fi li se solicită introducerea unui șir de text căruia i se atribuie numele
variabilei.

Accesarea valorilor unui șir


În Python, puteți accesa caracterele individuale ale unui șir utilizând extragere, indexare și o
serie de alte operațiuni. Dacă încerci să accesezi un caracter care este în afara intervalului de
index (intervalul în care ia valori), veți primi o eroare IndexError. Indicii șirului de caractere
încep de la 0 pentru primul caracter și putem folosi doar numere întregi pozitive. Dacă
încerci pentru indici orice alt tip de număr, cum ar fi un număr real de tip float, veți întâlni a
TypeError.
Ex11
name = input("Enter a word longer than 5 letters: ")
print (name[0], "is the first indexed character.")
print (name[1], "is the second indexed character.")
print (name[2:4], "is the range of third to fifth character.")
print (name[-1], "is the last character.")
print (name[-2], "is the second to last character.")

36
Elemente de programare
Introducere în Python
Corneliu Agapi

După cum puteți vedea în exemplul de mai sus, puteți tăia caracterele într-un șir folosind o
paranteză pătrată ([]) și chiar să specificați o serie de caractere folosind două puncte ([:]).
Ex12
name = "Peter"
print (name)
name = "Peter Pan"
print (name)
În Ex12, mai întâi atribuim numelui variabilei name șirul Peter și pentru a-l vedea îl folosim
metoda de print. Apoi reatribuim șirului Peter Pan aceeași variabilă name și aceasta este
actualizat.
Concatenarea și iterația șirurilor
Puteți uni (concatena) două sau mai multe șiruri pentru a le face unul singur folosind
operatorul plus (+) sau separarea variabilelor șir numite cu o virgulă. De exemplu, aici este
alt mod în care am fi putut actualiza variabila name în Ex12.py:
name = "Peter"
print (name)
name = name[0:4]+" Pan"
print (name)
Puteți multiplica copii ale unui șir pentru a crea șiruri noi folosind ca operator asterisc * în
Ex13.
Ex13
string1 = "Hello"
string2 = "World"
string3 = "!"
print ("string1 * 3 + string3 = ", string1 * 3 + string3)
print ("string1 + string2 = ", string1 + string2)
print ("string1, string2 = ", string1, string2)
print ("string1, string2 + string3 = ", string1, string2 + string3)
Observați cum utilizarea unui plus sau a virgulei determină dacă este pus un spațiu între cele
doua șiruri de caractere.
Secvență de escape a șirurilor
Putem lucra cu aproape orice tip de text, trebuie doar să o faceți incluzându-le între ghilimele
și apoi puteți să le împărțiți, tăiați, repetați etc. Dar ce faceți când doriți să lucrați cu un șir
care are ghilimele. De exemplu, cum ai imprima( afișa pe ecran ) un text care scrie:
„Îmi pare rău”, a spus el, „jucăriile ‘ Transformers ’ sunt epuizate.
Observați că această propoziție are atât ghilimele duble, cât și simple care creează un șir de
caractere.

37
Elemente de programare
Introducere în Python
Corneliu Agapi

Dacă puneți ghilimele pe acest șir și încercați să-l afișați, veți întâmpina o eroare de sintaxă.
Încearcă-l.
Într-un astfel de caz, putem folosi fie ghilimele triple, fie secvențe de escape pentru a evita
această problemă. O secvență de escape începe cu o bară oblică inversă (\). Se va plasa bara
oblică inversă în fața tuturor ghilimelelor duble din interiorul unui șir dacă șirul este creat
cu ghilimele duble. Veți face același lucru pentru ghilimele simple dacă șirul este creat cu
ghilimele simple.
Ex14
print ("I am sorry,\" he said, \"the ‘ Transformers ’ toys are out of stock\".")
print ('"I am sorry," he said, "the \'Transformers\' toys are out of stock".')
print (""""I am sorry, ” he said, “ the ‘ Transformers ’ toys are out of stock ” .""")

Există destul de multe alte secvențe de escape pe care le veți întâlni pe măsură ce exersați
lucrul cu șiruri de caractere. Iată o listă tabel cu cele mai populare secvențe escape pe care
le veți întâlni și ceea ce să faceți ele.
Caracter Secvență Descriere
\\ Backslash Afișează un backslash
\” Ghilimele duble Afișează o pereche ghilimele duble
\’ Ghilimele simple Afișează o singură ghilimea
\a clopot Sunete de sistem
\b backspace Mută cursorul înapoi un spațiu
\t Tab Mută cursorul înainte un Tab
\n newline Mută cursorul la începutul liniei următoare
Tabelul 10: Șir de secvențe escape
Funcții șir de Caractere
Există un număr destul de mare de funcții pe care le puteți folosi pentru a manipula șirurile
de caractere Piton. Unele dintre cele mai populare sunt incluse în tabelul de mai jos:
Funcție Descriere
upper() Returnează șirul cu caractere mari
lower() Returnează șirul cu caractere mici.
swapcase() Inversează caracterele, dacă sunt mici le face mari și invers.
capitalize() Primul caracter al șirului e mare.
title() Returnează un șir în care fiecare cuvânt începe cu un caracter mare.
strip() Returnează un șir în care sunt șterse spațiile, rândurile noi, tab-urile, sfârșitul de rând
split() Imparte toate cuvintele într-o listă
join() Concatenează toate cuvintele într-un șir.
Tabelul 11: Funcții șir de caractere
Ex15
mytext = "Happy new year World!"
print ("mytext.upper() = ", mytext.upper())
print ("mytext.lower() = ", mytext.lower())
print ("mytext.swapcase() = ", mytext.swapcase())

38
Elemente de programare
Introducere în Python
Corneliu Agapi

print ("mytext.capitalize() = ", mytext.capitalize())


print ("mytext.title() = ", mytext.title())
print ("mytext.strip() = ", mytext.strip())
print ("mytext.split() = ", mytext.split())
Formatarea șirurilor
În Python, puteți formata un șir prin plasarea operatorului de formatare a șirului (%) în
stânga specificatorului de conversie și valorile în dreapta. Poți să folosești acest operator de
formatare pe un șir care conține diferite tipuri de date inclusiv la tupluri, liste și dicționare.
Ex16
name = "Peter"
score = 75
print ("My name is %s and I scored %d percent!" %(name, score))
În acest exemplu, folosim substituenții %s și %d pentru a formata șirurile folosind
substituenți %s pentru șir și %d pentru întregul zecimal. Tabelul de mai jos prezintă
simbolurile de format pe care le veți utiliza pe diferite tipuri de date.
Funcție Descriere
%c Caracter
%s Șir de caractere (convertit utilizând str() înainte de formatare
%i or %d Întreg cu semn (zecimal în baza 10)
%u Întreg fără semn (zecimal în baza 10)
%o Întreg octal (baza 8)
%x Întreg hexazecimal(baza 16 – litere mici)
%X Întreg hexazecimal(baza 16 – litere mari)
%e Notația pentru exponent – litere mici
%E Notația pentru exponent – literă mare
%f Număr real cu zecimale
%g Număr întreg obținut prin trunchierea unui număr real %f sau %e
%G Număr întreg obținut prin trunchierea unui număr real %f sau %E
Tabelul 12: Formatarea șirurilor
Verificarea apartenenței într-un șir
Operatorii de apartenență in și not in au fost prezentați anterior acestui capitol și pot fi
folosiți pe tipuri de date secvențiale, inclusiv pe șiruri de caractere. În continuare vom vedea
cum o să folosim acești operatori pe șiruri de caractere atunci când vorbim despre cum să-i
aplicăm pe liste și tupluri în capitolul următor.

39
Elemente de programare
Introducere în Python
Corneliu Agapi

Numerele în Python
După șiruri, numerele sunt următoarele tipuri de valori cele mai populare în Python. Python
acceptă trei tipuri de numere: numere întregi, numere reale în virgulă mobilă și numere
complexe definite ca int, float și, respectiv complex. La fel ca șirurile, tipurile de date
numerice sunt imuabile.
Un număr întreg este un număr întreg fără virgulă zecimală în timp ce numărul real este cu
virgulă mobilă având cel puțin o zecimală. De exemplu, 2 este un număr întreg, în timp ce 2.0
este un număr real. În Python, numerele întregi pot avea orice lungime, iar numerele reale
(float) au o precizie de până la 15 zecimale.
Numerele complexe sunt sub forma x + yj unde x este partea reală a numărului iar y este
partea imaginară. Numerele complexe depășesc scopul acestei cărți deci vom acoperi doar
numere întregi și reale.
Ne ocupăm de numere zecimale (bază 10) în viața noastră de zi cu zi. Totuși, dacă ținem să
deveniți un programator competent, va trebui să știți cum să programați sisteme care
utilizează și numere în binar (bază 2), octal (bază 8) și hexazecimal (bază 16).
Această carte funcționează doar cu ceea ce suntem cu toții obișnuiți: numerele în baza 10.
Utilizarea operatorilor matematici
Cu Python, puteți efectua aproape orice calcul cu numere fără adăugarea oricărui cod
suplimentar. De exemplu, pe IDLE sau pe Terminal, puteți introduce direct operații
matematice și interpretorul va returna imediat rezultatele.
Ex17
my_math = 10 * -5
print (my_math)
print ("10 + 12 * 3 = ", 10 + 12 * 3)
print ("15 + 8 = ", 15 + 8)
print ("15 + 8.0 = ", 15 + 8.0)
print ("217 %5 = ", 217 %5)
O variabilă numerică este creată prin atribuirea unui nume unui număr folosind semnul egal
(=). În exemplul de mai sus, am creat o variabilă numită my_math cu valoarea 10*-5.
Puteți vedea în Ex17 că atunci când utilizați doi operanzi întregi, rezultatul va fi un număr
întreg și când utilizați un întreg și un operanzi flotant sau doi operanzi de tip real(float),
rezultatul va fi un real.
Constrângere numerelor
Procesul de conversie de la un tip de număr la altul se numește constrângere. Vedem deja că
operațiuni precum adunarea, scăderea, împărțirea, înmulțire, iar altele constrâng implicit un
număr întreg la unul real(float) dacă unul dintre operanzii este un real(float). De asemenea,
puteți utiliza funcțiile încorporate int(), float() și complex() pentru a fi explicit asupra unei
constrângeri între tipurile de numere și din șiruri.
Ex18
number1 = 12

40
Elemente de programare
Introducere în Python
Corneliu Agapi

number2 = 2.5
string1 = "10"
print (float(number1)) #convert number1 to float and print
print (int(number2)) #Convert number2 to integer and print
print (int(string1) * number2)
YoB = int(input("Enter your year of birth as YYYY: "))
age = 2017 - YoB
print ("You are %d years old!" %age)
În Ex18, variabila număr1 este un întreg, numărul2 este un real și șirul1 este un şir. A 5-a
linie a scriptului convertește numărul 1 în tipul float, următorul convertește numărul 2 într-
un număr întreg, iar a șaptea linie transformă șirul 1 într-un număr întreg înainte de a
înmulți cu numărul2. Rețineți că atunci când convertiți un număr real a la un număr întreg,
acesta este trunchiat la virgulă zecimală, nu trunchiat.
În același exemplu, observați că am creat variabila YoB întrebând utilizatorul la „Introduceți
anul nașterii ca AAAA: ” apoi îl convertim la un număr întreg înainte de a lucra cu el.
Funcții matematice
Există multe funcții Python încorporate care efectuează operații matematice pe numere.
Pentru a utiliza funcții matematice în modulul standard, va trebui să importați modulul de
matematică folosind import math.
Unele dintre cele mai frecvente funcții pe care ar trebui să le cunoașteți le aveți mai jos:
Funcție Descriere
fabs(x) Valoarea absolută lui x
ceil(x) Partea întreagă a lui x – întregul următor mai mare decât x
factorial(x) Calculează factorial de x , x fiind un întreg pozitiv
gcd(x,y) Calculează cmmdc al numerelor x și y
floor(x) Partea întreagă a lui x – întregul anterior mai mic decât x
round(x,n) Returnează numărul x cu n zecimale
modf(x) Returnează partea întregă și fracționară a lui x
exp(x) Returnează rezultatul lui e x
Pow(x,y) Returnează x la puterea y x**y
min(x,y) Returnează minimul dintre x și y
max(x,y) Returnează maximul dintre x și y
sqrt(x) Extrage rădăcina pătrată din x, unde x>
pi Constanta matematică pi
e Constanta matematică e
Tabelul 12: Funcții matematice

41
Elemente de programare
Introducere în Python
Corneliu Agapi

Capitolul 5: Liste și tuple și tipul dicționar

Listele și tuplurile sunt tipuri de date compuse populare care, în general, se încadrează în
categorie de secvențe alături de șiruri, secvențe de octeți, matrice de octeți și interval de
obiecte (veți afla despre acestea în stadii intermediare și avansate). Șirurile de caractere pot
arăta mult diferit de liste și tupluri, după cum veți observa, dar sunt asemănătoare prin aceea
că:
 Elementele lor sunt plasate într-o secvență definită.
 Elementele pot fi accesate prin intermediul indicilor.
 Ele pot fi manipulate prin tăiere folosind [] .
Python, spre deosebire de alte limbaje de programare orientate pe obiecte, folosește același
lucru nume de sintaxă și funcții pentru a manipula tipuri de date secvențiale liste și tuple.
Aceste operațiuni includ indexarea, tăierea, iterația, concatenarea și verificarea calității de
membru. Vom acoperi fiecare dintre acestea mai detaliat în acest articol secțiune.
Liste în Python și tupluri
O listă în Python este un tip mutabil care este alcătuit dintr-o colecție de ordonate obiecte.
Obiectele cuprinse într-o listă nu trebuie să fie de același tip și poate include alte liste
(subliste imbricate).
Un tuplu, pe de altă parte, spre deosebire de o listă, este un tip imuabil. Aceasta înseamnă că
obiectele (articolele) dintr-un tuplu nu pot fi modificate odată create. La fel ca o listă,
obiectele dintr-un tuplu pot fi de diferite tipuri.
Crearea unei liste și a unui tuplu
O listă este creată prin plasarea tuturor obiectelor (sau elementelor) într-o paranteză pătrată
[] și separate prin virgule. Un tuplu este creat prin separarea valorilor sale cu a numai virgulă,
dar este o bună practică să le includeți între paranteze (paranteze).
Ex19
list1 = ["March", "Five", 2012, 19.25, "Heaven"]
tuple1 = ("a", "Sydney", "1900", 3.142, 0.01, "Python")
tuple2 = "x", "empire", "lego", 1, 2.0, 7
print (list1)
print (tuple1)
print (tuple2)
De asemenea, puteți crea o listă prin împărțirea elementelor unui șir așa cum am văzut în
Ex15.
Accesarea valorilor din liste și tupluri
Accesați valorile listelor și tuplurilor (separate prin virgule) în același mod am făcut
caracterele unui șir: folosind indici și tăierea cu paranteze pătrate. Luați în considerare
operațiile din Ex20:

42
Elemente de programare
Introducere în Python
Corneliu Agapi

Ex20
list1 = ["March", "Five", 2012, 19.25, "Heaven"]
tuple1 = ("a", "Sydney", "1900", 3.142, 0.01, "Python")
tuple2 = "x", "empire", "lego", 1, 2.0, 7
print (list1[0:2])
print (list1[2:])
print (tuple1[1:5])
print (tuple2[0:-1])
Puteți vedea că folosim aceleași operații de tăiere și indici pe list1, tuple1, și tuple2 așa cum
am făcut șiruri. Vă veți aminti, de asemenea, că indicii încep de la 0 dar puteți folosi indecși
negativi pentru a număra de la ultimul obiect (-1).
Actualizarea obiectelor listei
Deoarece listele din Python sunt de tip mutabil, puteți actualiza una sau mai multe elemente
folosind operatorul de atribuire (=). De asemenea, puteți adăuga articole noi pe lista folosind
metoda append() ca în Ex21.
Ex21
list1 = ["March", "Five", 2012, 19.25, "Heaven"]
print ("Old list1: ", list1)
list1[0] = "December"
list1[-1] = "Hell"
list1.append("Computer")
print ("New list1: ", list1)
Puteți vedea în exemplul de mai sus că am actualizat list1 cu articole noi la pozițiile [0]
(primul) și [-1] (ultimul) apoi au adăugat un nou articol după ultima utilizare list.apend().
Tuplurile sunt imuabile și nu pot fi actualizate. Cu toate acestea, puteți lua valorile a unui
tuplu și creați un nou tuplu adăugând elemente noi sau combinând cu un tuplu existent.
Ștergerea obiectelor din listă
Există două moduri de a șterge elemente dintr-o listă în Python. Dacă știi exact elemente de
șters, puteți folosi declarația del, dar dacă nu știți, puteți utiliza metoda remove(). Luați în
considerare aplicarea lor în Ex22 de mai jos:
Ex22
list1 = ["March", "Five", 2012, 19.25, "Heaven"]
print ("Old list1: ", list1)
del list1[3]
list1.remove("Five")
print ("New list1: ", list1)

43
Elemente de programare
Introducere în Python
Corneliu Agapi

Lista de bază și operații cu tupluri


La fel ca șirurile, listele și tuplurile răspund la operațiunile de concatenare (+) și iterație (*).
Ex23
list1 = ["March", "Five", 2012, 19.25, "Heaven"]
list2 = ["Mayday", "rocket", -60]
tuple1 = ("a", "Sydney", "1900", 3.142, 0.01, "Python")
print (len(list1))
print (len(tuple1))
list3 = list1 + list2
print (list3)
print (list*2)
Python vine cu o serie de funcții încorporate pe care le puteți utiliza pentru a le manipula
liste și tupluri, un exemplu bun fiind len(), (len(list1) și len(tuple1)) funcțiile din Ex23 de mai
sus. Altele sunt:
Funcție Descriere
cmp() Compară elementele din două liste sau tuple
len() Returnează lungimea totală a unei secvențe
max() Returnează elementul cu valoare maximă din listă
min() Returnează elementul cu valoare minimă din listă
list(seq) Convertește un tuplu într-o listă
tuple(seq) Convertește o listă într-un tuplu
Table 14: Funcții pentru Liste și tupluri

44
Elemente de programare
Introducere în Python
Corneliu Agapi

Python liste - metode


În ceea ce privește metodelor utilizate asupra listelor, am folosit doar două până acum:
append() în Ex21 și remove() în Ex22.
Sunt mai multe cu care ar trebui să exersăm ceea ce am învățat despre liste. Iată un tabel cu
de metode folosite la liste în Python și definiția lor.
Metodă Descriere
append() Adaugă un element al unei unei liste la o altă listă
remove() Șterge un element din listă
extend() Adaugă toate elementele unei liste la o altă listă
insert() Inserează un articol la indexul definit
copy() Returnează o copie a unei liste
pop() Îndepărtează un articol de la indexul dat și îl returnează
index() Returnează indexul primului element potrivit
clear() Elimină toate elementele dintr-o listă
count() Returnează numărul de elemente transmise ca argument
reverse() Inversează ordinea elementelor dintr-o listă
sort() Sortează elementele dintr-o listă în ordine crescătoare
Table 15: Liste metode în Python
Puteți încerca să aplicați aceste metode la șiruri și tupluri pentru a afla care dintre ele
funcționează (și de ce)?
Avantajele tuplurilor față de liste
Am stabilit că listele și tuplurile sunt similare în multe privințe și pot fi interschimbabile în
multe situații. Având în vedere că listele sunt mutabile în timp ce tuplurile nu sunt,
majoritatea începătorilor se întreabă adesea în ce situații un tuplu este mai aplicabil în
comparație cu o listă.
Sunt patru:
1. Atunci când lucrați cu tipuri eterogene (diferite) de date, este mai bine să folosești
un tuplu. O listă este mai practică la secvențiere de date de același tip.
2. În cazul în care secvența va fi iterată, este mai avantajos utilizați un tuplu deoarece
este imuabil și va fi repetat mai repede de interpretul.
3. Un tuplu poate fi folosit ca cheie de dicționar deoarece datele sale sunt imuabil. O
listă nu poate fi folosită ca cheie de dicționar.
4. Când aveți date care nu se modifică, cel mai bun mod de a face sigur că nu se
schimbă este să-l implementezi ca tuplu.

45
Elemente de programare
Introducere în Python
Corneliu Agapi

Dicționare Python

Ar fi imposibil să scrieți un program de calculator funcțional în Python fără a utiliza tipurile


de date secvențiale pe care le-am acoperit până acum (șiruri, liste și tupluri) și dicționare.
La fel ca listele, dicționarele sunt un tip de date mutabil ale cărui obiecte pot fi ușor șterse,
actualizate și adăugate în timpul execuției și pot conține, de asemenea, diferite tipuri de date
(inclusiv liste). Diferența dintre cele două este că dicționarele conțin articole care nu sunt în
nicio ordine, spre deosebire de listele ale căror articole sunt ordonate. Asta înseamnă că
articolele dintr-un dicționar sunt accesate folosind taste și nu pozițiile acestora.
Prin urmare, putem spune că un dicționar în python este o matrice asociativă sau hash în
care fiecare valoare este mapată la (asociată cu) o cheie.
Crearea unui dicționar
Un dicționar în Python este creat prin împerecherea valorilor cu chei folosind două puncte
formatul (key:value). Perechile key:value sunt separate prin virgule și sunt cuprinse între
acolade ({}). Se poate crea și un dicționar sau convertit dintr-un alt tip de date folosind
funcția încorporată dict(). În Ex23, am creat trei dicționare numite myDict, dict1 și
class_performance :
Ex23
myDict = {"ID":12, "name":"John Daniel", "score":95, "Grade":"A"}
dict1 = dict([(1, "cars"), (2, "computers"), (3, "planes")])
class_performance = dict({1:"Mark", 2:"Janet", 3:"Simon", 4:"Arthur",
5:"Lee"})
print (myDict)
print (dict1)
print (class_performance)
Accesarea elementelor de dicționar
După cum am menționat mai devreme, în timp ce indexarea este utilizată pentru a accesa
valorile secvenţiale tipuri de date, cheile sunt folosite pentru a accesa valorile unui dicționar.
Puteți folosi doar cheia într-o paranteză pătrată, dar este recomandat să vă faceți un obicei
utilizați metoda get().
Ex24
myDict = {"ID":12, "name":"John Daniel", "score":95, "Grade":"A"}
print (myDict["name"])
print (myDict.get("score"))
Folosirea get() are avantajul de a returna o valoare None atunci când lipsește o cheie și nu o
KeyError pe care o veți întâlni folosind cheile dintre paranteze drepte.
Actualizarea dicționarului
Deoarece dicționarul este un tip mutabil, puteți adăuga elemente noi, puteți șterge cele
existente cele sau actualizați cheile și valorile folosind operatorul de atribuire (=).

46
Elemente de programare
Introducere în Python
Corneliu Agapi

Ex25
myDict = {"ID":12, "name":"John Daniel", "score":95, "Grade":"A"}
print ("Old myDict: ", myDict)
myDict["YOB"] = 1995
myDict["Grade"] = "B"
del myDict["ID"]
print ("New myDict: ", myDict)
În exemplu, am adăugat o nouă pereche cheie:valoare de dicționar „YOB”:1995 și a actualizat
valoarea cheii „Notă” la B. Am folosit și del pentru a șterge perechea „ID”:12. Pentru a șterge
toate intrările din dicționar, puteți folosi funcția dict.clear sau del dict to ștergeți întregul
dicționar.
Dicţionar metode
Iată un tabel cu metodele disponibile cu tipul de dicționar în Python alături de definiţiile lor.
Asigurați-vă că încercați fiecare dintre ele pentru a vedea dacă se întâmplă ceea ce este
descris.
Metodă Descriere
dict.clear() Șterge toate elementele din dicționar
dict.copy() Returnează o copie a dicționarului
dict.items() Returnează o nouă vizualizare cheie:valoare a elementelor din dicţionar.
dict.keys() Returnează o nouă vizualizare a cheilor dicționarului.
dict.pop(key[,d]) Îndepărtează elementul cu cheie și returnează valoarea sa sau d dacă key nu este găsit.
dict.popitem() Îndepărtează și returnează un element arbitrar cheie:valoare).
dict.update() Actualizează dicționarul cu perechile cheie:valoare, suprascrie cheile existente.
dict.values() Returnează o nouă vizualizare a valorilor dicționarului
Tabel 16: Metode pentru dicționare în Python

47
Elemente de programare
Introducere în Python
Corneliu Agapi

Dictionary functions
Python vine cu o serie de funcții de dicționar încorporate pe care le puteți exersați cu pentru
a obține o înțelegere mai profundă a ceea ce fac. Acestea sunt:

Metodă Descriere
all() Returnează True dacă toate cheile de dicționar sunt adevărate sau dacă dicționarul
este gol.
Returnează True dacă orice cheie a dicționarului este adevărată și False dacă
any()
dicționarul este gol.
len() Returnează lungimea dicționarului (numărul de articole).
cmp() Compară articolele din două dicționare.
sorted() Returnează o nouă listă sortată de chei în dicționar.
Returnează tipul de dicționar dacă variabila transmisă este de tip
type(var)
dicţionar.
str() Produce un șir imprimabil al articolelor din dicționar.
Tabel 17: Funcții pentru dicționare în Python

Proprietățile cheilor de dicționar în Python


Valorile dicționarului pot fi obiecte arbitrare - standard sau definite de utilizator - există fără
restricții. Cu toate acestea, există două considerații esențiale de care trebuie să țineți cont
chei de dictionar:
1. Nu puteți avea două sau mai multe chei similare. Cheile trebuie să fie unic. Când
există mai multe chei similare, ultima fi atribuit este singurul valid.
2. Cheile de dicționar trebuie să fie imuabile. Puteți folosi numere, șiruri sau tupluri
ca chei, dar nu puteți folosi ceva asemănător ['cheie'].
<< Capitolul 6 pag. 70 >>

48
Elemente de programare
Introducere în Python
Corneliu Agapi

Capitolul 7: Comenzile de tip test și bucle

Când scrieți un program, va trebui să includeți structuri de luare a deciziilor în anticiparea


condiţiilor care vor apărea în timpul execuţiei programului. În în acest capitol, veți învăța
cum să utilizați instrucțiunea if pentru a scrie un program care ia decizii și cum să creeze un
program care repetă while un anumit bloc de cod până când sau când o condiție este
îndeplinită.

Instrucțiunea de Test - IF
Structurile de luare a deciziilor evaluează una sau mai multe expresii care pot returna
rezultatele Adevărat sau Fals folosesc apoi răspunsul pentru a determina ce acțiune să
întreprindă sau ce bloc de cod are de executat când rezultatul este adevărat sau fals.
Structura generală de luare a deciziilor găsită în majoritatea limbajelor de programare au
acest format:

Dacă testul de condiție returnează orice valoare non-zero sau non-nulă, Python o
înregistrează ca Adevărat (True). Valorile NULL și ZERO sunt considerate False(False).
Următoarele tipuri de declarațiile de luare a deciziilor sunt disponibile în Python:
1. If
2. If..else
3. If...elif..else
4. Nested... if
Instrucțiunea if
Instrucțiunea if testează o condiție, cum ar fi dacă două variabile sunt egale, atunci execută
un bloc de cod dacă rezultatul este adevărat. Sintaxa cea mai de bază a acesteia afirmația
este:

49
Elemente de programare
Introducere în Python
Corneliu Agapi

if <condition>:
statement(s)
Luați notă de cele două puncte (:) după condiția de testare și indentarea lui următoarea linie
de declarație sau declarații.
Declarația (declarațiile) în acest caz este (sunt) un bloc indentat care poate fi alcătuit din
unul sau mai multe afirmații. Indentarea este foarte importantă în Python, deoarece aceasta
este modul în care interpretul determină ce linii de cod aparțin și în ce bloc. Faceți-vă un
obicei să vă indentați liniile de cod la un nivel folosind o tab sau patru spații.
Instrucțiunea if testează expresia booleană <condition> care va fi evaluată fie Adevărat, fie
Fals. Dacă condiția este Adevărată, instrucțiunile sunt executate și dacă este Fals,
interpretul va ignora declarațiile indentate și va continua cu execuția programului la prima
linie după blocul indentat de declarație sau declarații.
Ex30
number = int(input("Enter a number to check if it is EVEN: "))
if number % 2 == 0:
print (number, "is an even number.")
Observați că în exemplul nostru, atunci când introduceți o valoare a cărui răspuns este Fals,
programul se oprește deoarece nu există instrucțiuni de executat. Condiția poate avea mai
multe condiții de evaluat folosind ca logică, operatorii ca în exemplul nostru următor:
Ex31
age = int(input("How old are you? "))
gender = str(input("Is your gender M or F? "))
if age >= 18 and gender == "M":
print ("You are an adult male.")
Condiția din acest exercițiu verifică dacă valoarea vârstei este egală sau mai mare decât 18
și valoarea genului este M, pentru a afișa instrucțiunea șir “You are an adult male”.

Instrucțiunea if..else
Instrucțiunea if are un dezavantaj: că există un singur bloc de cod pentru care se execută
când condiția de testare se evaluează la True.
Declarația if...else ia aceasta structură:

50
Elemente de programare
Introducere în Python
Corneliu Agapi

Iată sintaxa Python pentru această instrucțiune IF:


Dacă condiția de testare returnează True, primul bloc de instrucțiuni este executat și dacă
condiția de testare returnează False, blocul de instrucțiuni sub instrucțiunea else: sunt
executate. De exemplu, programul din Ex30 ar fi mult mai practic dacă ar fi ar putea să ne
spună ma degrabă că numărul evaluat este impar atunci când nu este par decât să încheiem
programul. Pentru a realiza acest lucru, folosim declarația if...else în loc de if.
Ex32
number = int(input("Check this number if it is EVEN or ODD: "))
if number % 2 == 0:
print (number, "is an even number.")
else:
print (number, "is an odd number.")

Instrucțiunea if…elif
Instrucțiunea if...elif este o construcție complexă a condiționalului if...else, elif fiind o
prescurtare pentru else if.
Cu instrucțiunea if...elif, există mai multe condiții de testat și la sfârşitul testelor există o
instrucţiune else: opţională. else:, la fel ca și cu instrucțiunea anterioară if...else, este un bloc
de cod de executat dacă toate cele condițiile anterioare sunt False.
Sintaxa pentru structura de luare a deciziilor if...elif arată astfel:

51
Elemente de programare
Introducere în Python
Corneliu Agapi

if <condition>:
statement(s)
elif:
statement(s)
Ex33
age = int(input("How old are you? "))
if age < 0:
print ("Age cannot be less than 0.")
elif age < 13:
print ("You are a child.")
elif age < 20:
print ("You are a teenager.")
elif age < 60:
print ("You are an adult.")
elif age < 120:
print ("You are a senior citizen.")
else:
print ("You have entered an invalid age.")

Rețineți că structura if...elif a luării deciziilor este echivalentă cu o serie imbricată de if...else,
cu excepția declarațiilor, și care este mai elegantă și mai ușor de lucrat.

Instrucțiuni if imbricate

Când începeți să creați programe și mai complexe în Python, este posibil să aveți nevoie să
plasați oricare dintre cele trei structuri de luare a deciziilor în interiorul unei structuri if
pentru a forma o structură mai mare de instrucțiuni if imbricate.
Pentru că imbricarea if poate forma o structură complexă, chiar confuză, tu va trebui să
acorde o mare atenție indentării pentru a diferenția nivelurile fiecărui dacă afirmație.
Sintaxa acestui tip de instrucțiune condițională ar lua a structura astfel:

52
Elemente de programare
Introducere în Python
Corneliu Agapi

if <condition1>:
statement(s)
if <condition2>:
statement(s)
elif <condition3>
statement(s)
else:
statement(s)
elif <condition4>:
statement(s)
else:
statement(s)
Ex34
x = int(input("Enter a positive number x: "))
y = int(input("Enter a positive number y: "))
if x >= 0 and y >= 0:
if x > y:
print ("x is greater than y.")
elif x==y:
print ("x and y are equal.")
else:
print ("y is greater than x.")
else:
print ("Either or both x and y are not positive integers.")
Iată un exemplu bun de declarație if imbricată simplă. Puteți identifica care dacă declarația
este în interiorul celuilalt ?

53
Elemente de programare
Introducere în Python
Corneliu Agapi

Instrucțiuni de tip buclă în Python

Buclele sau instrucțiunile de tip buclă sunt folosite pentru a repeta una sau mai multe
instrucțiuni de mai multe ori. Python oferă trei mecanisme pentru a executa în mod repetat
unul sau mai multe blocuri de cod fie pentru un număr definit de ori, fie continuu până la a
condiția definită este îndeplinită.
Cele trei tipuri de bucle pe care le vom acoperi în această secțiune sunt: bucla for, bulca
while și bucla imbricată.
Bucla for
Bucla for este cea mai populară structură de buclă din Python folosită pentru a itera peste o
secvență, cum ar fi o listă, șir, tuplu sau interval. Bucla for are următoarea formă generală:
for var_name in sequence:
statement
În sintaxa de mai sus, var_name este variabila care își asumă valoarea articolului în
interiorul secvenței în fiecare rundă de iterație. Bucla va continua până la se ajunge la ultimul
element din secvență.
Diagrama de mai jos simplifică modul în care funcționează bucla for:

Ex35
for x in range(0,10):
print("x = ", x)
În acest exercițiu, folosim instrucțiunea for pentru a utiliza valoarea incrementală a lui x in
intervalul de la 0 la 10.
54
Elemente de programare
Introducere în Python
Corneliu Agapi

Bucla while
Bucla while este folosită pentru a repeta peste un bloc de cod atâta timp cât este o condiție
de testare returnează Adevărat. Bucla while este folosită atunci când nu cunoașteți numărul
de ori a repeta în avans. Sintaxa buclei while are următoarea formă:
while <condition>:
statements
Cu bucla while, condiția de testare este verificată mai întâi și corpul executat numai dacă
condiția de testare se evaluează la Adevărat. Acest tip de buclă verifică testul condiție după
fiecare ciclu de iterație până când condiția de testare se evaluează la Fals.
Figura de mai jos este o diagramă de flux a buclei while:

Ex36
total = 0
x=1
xmax=eval(input("Enter the maximum integer for total: "))
while x <= xmax:
total+= x
print (total)
x+=1
print ("The total is", total)
În acest exemplu, valoarea variabilei x crește de la 1 la valoarea introdusă de numele
variabilei atribuit utilizatorului xmax. Rețineți că, deoarece comanda range este neutilizat în
această iterație, xmax este utilizat direct ca parametru în buclă.

55
Elemente de programare
Introducere în Python
Corneliu Agapi

În Ex37, folosim bucla while pentru a repeta un șir de un număr de ori precizat de utilizator.
Ex37
my_text = input("Enter a word to iterate: ")
loops = int(input("Enter times to iterate: "))
x=1
while x <= loops:
print (my_text, "X", x)
x = x+1

Instrucțiuni de tip buclă imbricate

Așa cum punem o instrucțiune if în alta pentru a crea o structură if imbricată, De asemenea,
putem pune o buclă de tip while sau for loop în interiorul altei bucle. Regulile și structura
pentru o buclă imbricată în Python este aproape aceeași cu regulile de îmbricare.
O notă importantă despre buclele de imbricare este că puteți pune orice tip de buclă în
interior oricărui alt tip de buclă. Aceasta înseamnă că o buclă for se poate încadra într-o altă
buclă for sau buclă while și invers. Sintaxa unei bucle imbricate de bază ar arăta ca oricare
din acestea:

for var in sequence:


for var in sequence:
statements
statement

for var in sequence:


while <condition>:
statements
statements

while <condition>:
for var in sequence:
statements
statements

56
Elemente de programare
Introducere în Python
Corneliu Agapi

while <condition>:
while <condition>:
statements
statements
Studiați Ex38, care găsește și tipărește numere prime între 2 și 100, și încercați să înțelegeți
cum este structurată o buclă imbricată.
Ex38
x=2
while (x < 100):
y=2
while (y <= (x/y)):
if not(x%y):
break
y=y+1
if (y > x/y):
print (x, " is a prime number.")
x=x+1
print ("Maximum number 100 reached.")

Instrucțiuni de control în buclă


În secțiunea anterioară, am învățat că buclele iterează peste un bloc de cod până la a o
anumită condiție este îndeplinită sau până când condiția de testare revine False. In orice caz,
uneori, este posibil să doriți ca programul dvs. să încheie o iterație în curs sau un întreagă
buclă fără a verifica neapărat starea de testare. Într-un astfel de caz, veți putea să utilizați o
instrucțiune de control al buclei.
Instrucțiunile de control al buclei sunt folosite pentru a modifica fluxul normal al unui bloc
în buclă de cod. Python acceptă trei instrucțiuni de control: break, continue și pass.

Instrucțiunea break
Declarația break încheie bucla în care este conținută și transferă fluxul de execuție la
instrucțiunea imediat următoare corpului buclei. Dacă instrucțiunea break este conținută în
interiorul unei bucle imbricate, utilizarea acesteia va cauza ieșirea din bucla cea mai
interioară și încheierea ei. Sintaxa pentru instrucțiunea break este pur și simplu break.

57
Elemente de programare
Introducere în Python
Corneliu Agapi

Ex39
for letter in "Success":
print ("Current letter:", letter)
if letter == "e":
break
print ("Found letter:", letter)
În acest exemplu, interpretul iterează prin literele din cuvântul „Succes”. până găsește litera
„e”, după care întrerupe ciclul și derularea programului este transferată la ultima linie din
afara buclei.

Instrucțiunea continue
Spre deosebire de break, instrucțiunea continue nu încheie bucla și în schimb întrerupe
bucla curentă și omite instrucțiunile buclei rămase. Apoi se mișcă controlat înapoi la
începutul buclei pentru a retesta starea și a relua ciclul.
Sintaxa pentru acest control al buclei este continue.
Ex40
for letter in "Success":
if letter == "e":
continue
print ("Current letter:", letter)
Ex40 seamănă mult cu Ex39, cu excepția faptului că folosim continue în loc de break. Puteși
să explicați efectul pe care îl are această modificare asupra rezultatului scriptului?

Instrucțiunea pass
În Python, instrucțiunea pass este o instrucțiune nulă, astfel încât nimic nu se întâmplă
atunci când se execută (o stare numită NOP sau fără operație). Este folosit ca substituent
unde o instrucțiune este necesară din punct de vedere sintactic, dar nu există cod sau
comandă pentru a fi execută. Pass este folosit ca substituent pentru o funcție viitoare sau o
buclă care nu a fost implementată încă.
Rețineți, totuși, că, spre deosebire de un comentariu, este complet ignorată, declarația de
trecere nu este ignorată de interpret.

Utilizarea else: cu bucle în Python


Declarația else pe care am folosit-o în structura de luare a deciziilor poate fi opțional utilizat
atât cu buclele for, cât și cu buclele while. La fel ca și cu declarația if, buclele pot avea blocul
else: care este executat atunci când condițiile de testare devin False.
Sintaxa pentru bucla for și while cu else: ar arăta astfel:

58
Elemente de programare
Introducere în Python
Corneliu Agapi

for var_name in sequence:


statement
else:
statement

while <condition>:
statement
else:
statement

Instrucțiunea range
În exemplele pe care le-am folosit în acest capitol, îi cerem interpretului să facă bucla peste
un interval specificat de numere întregi sau de caractere. Comanda range este utilizată
pentru a repeta bucla de un număr fix de ori.
Există trei moduri de utilizare comanda range:
range(i): Aceasta generează o secvență de numere întregi care încep la 0 și se termină la i-1
(nu i), crescând cu 1 cu fiecare iterație.
range(i, j): Această comandă generează o secvență de numere întregi începând de la i și se
termină la i-j, crescând cu 1 la fiecare iterație.
range(i,j,k): Această comandă range generează o secvență de numere întregi care încep la i
și se termină la j-1, crescând cu k cu fiecare iterație.

59
Elemente de programare
Introducere în Python
Corneliu Agapi

Capitolul 8: Funcții și argumente

Când creați un bloc de cod care efectuează un anumit calcul sau un acțiune, o modalitate utilă
de a te referi la ea este o funcție. În Python, veți putea apela o instanță de cod de mai multe
ori și reutilizați-l pentru a evita să scrieți similar cod din nou și din nou în unul sau mai multe
programe pe care le creați.
O funcție primește o anumită intrare, denumită parametri de intrare sau argumente, și face
ceva cu el. Poate returna sau nu un rezultat (o valoare), în funcție de pentru ce ai scris.
Consideră că funcția este o modalitate de a descompune un program complex în bucăți
modulare sau mai mici pentru o mai bună organizare și gestionare.
Funcțiile predefinite, cum ar fi sqrt() și cos() sunt exemple bune de funcțiile care vin cu
Python. De asemenea, vă puteți defini propriile funcții. Acest este ceea ce vom învăța în acest
capitol.
Definirea unui funcții în Python
O funcție este definită folosind cuvântul cheie def și atribuindu-i un nume. Sintaxa sa are
următorul format:
def function_name(arguments):
"""docstring"""
statement(s)
Cuvântul cheie def marchează începutul antetului funcției urmat de numele funcției, un
identificator unic care trebuie să respecte regulile standard de scriere identificatori în
Python. Secțiunea de argumente din paranteze este opțional conține valorile sau parametrii
ce sunt transferați funcției . Rețineți că sfârșitul funcției antetul este marcat cu două puncte
(:).
Șirul de caractere opțional (docstring) descrie ceea ce face funcția. Declarațiile care
alcătuiesc corpul funcției sunt introduse sub docstring și trebuie să fie indentat la același
nivel, de obicei un tab sau patru spații. Declarația return de la sfârșitul funcției specifică că
se iese din funcție înapoi la ultima poziție de unde a fost numită. Rețineți că returnarea poate
conține o expresie sau mai multe expresii care sunt evaluate, sau doar o valoare returnată.
Ex41
def ODDorEVEN(x):
"""This is a function to determine
whether a number is even or odd"""
if (x%2 == 0):
print (x, "is an even number.")
else:
print (x, "is an odd number.")
return

60
Elemente de programare
Introducere în Python
Corneliu Agapi

Apelul unui funcții

Odată ce definiți o funcție, o puteți apela din promptul Python, programul sau altă funcție
prin simpla introducere a numelui acesteia cu parametrii corespunzători. Pentru a apela
funcția ODDorEVEN am definit-o în Ex41 și am testat un număr (10) indiferent dacă este par
sau impar, puteți introduce această comandă pe shell:
Ex42
def ODDorEVEN(x):
"""This is a function to determine
whether a number is even or odd"""
if (x%2 == 0):
print (x, "is an even number.")
else:
print (x, "is an odd number.")
return
x = eval(input("Enter a number to evaluate: "))
ODDorEVEN(x)

În acest exemplu, am folosit funcția ODDorEVEN din cea precedentă, pentru a demonstra
cum să apelați o funcție cu un singur argument.

Parametrii funcției

Ați învățat în secțiunea anterioară cum vă puteți defini propria funcție și cum să o definești.
Funcția noastră ODDorEVEN din Ex41 și Ex42 preia un parametru (argument) sau valoarea
(x).
Dacă funcția este rulată fără argumentul(parametrul) pe care îl așteaptă, interpretul va
returna o eroare. Același lucru se va întâmpla dacă oferiți două argumente când funcția are
nevoie doar de unul. Prin urmare, în mod implicit, argumentele (parametrii) funcției sunt
necesare și trebuie transmise la funcție în ordinea și poziția corectă. Cu toate acestea, Python
oferă mai multe opțiuni pentru a transmite argumente ale funcțiilor inclusiv:

1.Argumente poziționale
În comparație cu alte limbaje, Python gestionează argumentele funcției într-un mod foarte
flexibil. Am văzut deja în cele două exemple anterioare că argumentelor li se atribuie valori
în formatul „parametru=valoare” folosind operator de atribuire. Cu argumente poziționale,
valorile sunt atribuite parametrii funcției în ordinea locației lor. Luați în considerare
exemplul de mai jos:

61
Elemente de programare
Introducere în Python
Corneliu Agapi

Ex43
def user_details(age, sex, location):
"""Practicing positional arguments
in Python."""
print ("User is", age, "year old", sex, "from", location)
return
user_details (21, "male", "Nairobi")
user_details ("male", "Nairobi", 21)
În ultimele două rânduri ale exemplului de mai sus, interpretul le atribuie pe cele trei
parametrii furnizați funcției user_details parametrii vârstă, sex și locația în această ordine.
Furnizarea valorilor argumentului în ordine incorectă cauzează parametrilor funcției să li se
atribuie valori incorecte ale argumentului ca în ultima linie.

2.Argumente opționale sau implicite


Puteți furniza valori implicite argumentelor pe care trebuie să le ruleze o funcție operatorul
de atribuire (=). Ex44 demonstrează cum se poate realiza acest lucru:
Ex44
def greeting (name, timeofday = "morning"):
"""This function generates a user greeting
including the user name. The user can enter
the time of day."""
print ("Good" + timeofday, name + "!")
return

greeting (name = "Arthur", timeofday = "afternoon")


greeting (name = "Moses")
greeting (name = "Hawk", timeofday = "night")

În exemplul nostru de mai sus, funcția greeting necesită două argumente pentru numele
parametrilor și ora zilei. Cu toate acestea, am setat valoarea implicită pentru parametrul oră
din zi ca „dimineață”. Puteți vedea în a doua execuție a funcție care atunci când valoarea
pentru timeofday nu este furnizată, valoarea implicită a fost folosită. Din această cauză,
exemplul nostru nu întâmpină o eroare atunci când numai este furnizat argumentul necesar.
Atribuirea unei valori implicite pentru un argument de funcție este, de asemenea, cea mai
practică modalitate făcând dintr-un argument, un argument opțional.

62
Elemente de programare
Introducere în Python
Corneliu Agapi

3.Cuvinte cheie ca argument

Argumentele poziționale provoacă multă confuzie, dar puteți evita toate acestea prin
specificarea argumentelor unei funcții prin numele parametrilor corespunzătoare chiar dacă
sunt într-o ordine diferită în antetul definiției funcției. Când argumentele funcției au
parametri definiți, puteți atribui valori argumentelor fără să ne facă griji pentru pozițiile lor.

Ex. 45
def user_details(age, sex, location):
"""More about keyword arguments
in Python"""
print ("User is", age, "year old", sex, "from", location)
return
user_details (location = "New York", age = 32, sex = "female")
user_details (sex = "male", location = "Nairobi", age = 21)

Puteți vedea în exemplul de mai sus că această abordare vă permite chiar să amestecați
ordinea argumentelor. Cu toate acestea, rețineți că, dacă funcția dvs. are ambele argumente
poziționale și o cheie, va trebui să aranjați mai întâi argumentele în ordinea lor.

4. Număr arbitrar de argumente


Am stabilit că argumentele cuvintelor cheie permit multă flexibilitate în special la apelarea
funcției. Vă permite să creați o funcție care poate gestiona numeroase situații, inclusiv atunci
când sunt reutilizate în alte scripturi. Oricum, indiferent în ce ordine furnizați argumentele
necesare, trebuie să furnizați un număr fix de argumente așa cum este specificat în funcție.
Cu Python, puteți crea o funcție care acceptă o secvență arbitrară argumente prin plasarea
unui asterisc în fața argumentului.
Ex46
def user_details(name, age, *comments):
"""Assigning an arbitrary number of arguments
to a function"""
print ("User name:", name, "| Age:", age, "| Comments:", comments)

user_details("Mariah", 25, "Website: mariah.com")


user_details("James", 30, "Plays basketball", "email: james@email.com")
user_details(name = "Mr. King", age = 50)

63
Elemente de programare
Introducere în Python
Corneliu Agapi

În această demonstrație, prin plasarea unui asterisc (*) înainte de parametrul comentarii, l-
am activat să accepte orice argument suplimentar transmis către funcţie. Până la ultima linie
a scriptului apelează funcția și furnizează patru argumente când în antetul funcției sunt
definite doar trei, dar programul rulează fără eroare. Poți afla câte argumente mai poți
adăuga?

5. Un număr arbitrar de argumente și cuvinte cheie


Pe lângă faptul că vă permite ca funcțiile să accepte un număr arbitrar de argumente
nedefinite, puteți crea și funcții în Python care acceptă un număr arbitrar de argumente ale
cuvintelor cheie.
Ex47
def products(prod_name, price, **kwargs):
"""Assigning an arbitrary number of keyword arguments
to a function"""
print ("Product name:", prod_name, "| Price:", price)
print ("Description:", kwargs)
products("Cup", "$10", color = "Red", manufacturer = "ABC co.")
products("Plate", "$5", material = "China ceramic", size = "Family size")
products("Cuttlery", "$25", set_no = "P87439", spoons = 12, forks = 12,
knives = 2)
După cum puteți vedea în acest exemplu, adăugarea *kwargs înseamnă că un număr arbitrar
de alte perechi parametru=valoare pot fi adăugate în timpul rulării.

64
Elemente de programare
Introducere în Python
Corneliu Agapi

Capitolul 9: Operații cu fișiere

Ați învățat multe până acum, dar toate exemplele pe care le-am folosit fie au date statice
(tipurile de date pe care le-am introdus în script pentru demonstrație) sau poate prelua
intrarea temporară a utilizatorului care se pierde când ieșim din shell. Practic programarea
presupune lucrul cu fișiere pentru a citi și stoca date permanente scripturile programului.
Acesta este ceea ce veți fi prezentat în acest capitol.
Un fișier de computer poate fi definit ca o locație de stocare numită pe o memorie volatilă
dispozitiv, cum ar fi hard disk-ul, unde datele sunt înregistrate pentru a fi accesate și/sau
modificat ulterior. Operațiunile sau gestionarea fișierelor în Python este un proces în trei
pași care include:
1. Deschideți un obiect fișier.
2. Utilizarea obiectului fișier pentru a citi și scrie date.
3. Închiderea obiectului fișier.

Înainte de a continua, avem nevoie de un fișier cu care să lucrăm în acest capitol. Utilizați un
editor de text aplicație de pe computer pentru a crea un fișier text numit days.txt cu o listă
a fișierelor zilele săptămânii într-un director pe care îl puteți accesa cu ușurință, cum ar fi
desktopul sau locația fișierelor Exemplu.

Deschidere obiectul fișier

Un fișier trebuie deschis înainte de a putea fi citit sau scris în el. Python vine cu funcția
încorporată open() care returnează obiectul fișierului sau handle-ul cu care este obișnuit
citește și scrie fișierul.
Sintaxa pentru deschiderea unui fișier este:
file object = open(file_name, [access_mode], [buffering], [encoding])
file object: Folosind funcția open() se creează un obiect fișier care este folosit pentru apel
alte metode asociate.
nume_fișier: Acesta este un argument șir care conține numele fișierului dorit pentru a fi
deschis.
access_mode: Modul de acces este un parametru opțional care determină modul în care
fișierul va fi accesat sau manipulat.
Tabelul de mai jos prezintă lista valorile argumentului access_mode și ce înseamnă acestea:

65
Elemente de programare
Introducere în Python
Corneliu Agapi

Metodă Descriere
r Acesta este modul implicit. Deschide fișierul numai pentru citire și plasează indicatorul
fișierului la începutul fișierului.
Deschide fișierul în format binar pentru citire numai cu indicatorul plasat la începutul dosarului.
rb Acesta este modul implicit când fișierul este deschis in binar.
r+ Deschide fișierul pentru citire și scriere cu indicatorul plasat la începutul dosarului.
Deschide fișierul în format binar pentru citire și scriere cu indicatorul plasat la începutul
rb+
fișierului.
Deschide fișierul doar pentru scriere. Se creează un fișier nou dacă nu există deja sau îl
w suprascrie dacă există deja.
Deschide fișierul în format binar numai pentru scriere. Dacă fișierul există, este suprascris și
wb dacă nu există, se creează unul nou.
Deschide fișierul pentru citire și scriere. Dacă fișierele există, este suprascris și dacă nu, atunci
w+ se creează unul nou pentru citire și scris.
Deschide fișierul în format binar pentru citire și scriere. Dacă fișierele există, este suprascris și
wb+ dacă nu există atunci se creează unul nou pentru citit si scris.
Deschide fișierul pentru scriere la sfârșit, cu indicatorul de fișier la sfârșitul fișierului. Dacă
a fișierul nu există, se creează unul nou pentru scriere.
Deschide fișierul în binar pentru a fi scris la sfârșit, cu indicatorul de fișier la sfârşitul dosarului.
ab Dacă fișierul nu există, se creează unul nou pentru scris.
Deschide fișierul atât pentru citire, cât și pentru scriere la sfârșit. Dacă fișierul există și este
a+ deschis în modul anexare cu indicatorul plasat la sfârșitul fișier, iar dacă nu există este creat
unul nou pentru citire și scriere.
Deschide fișierul în format binar atât pentru citire, cât și pentru scriere la sfârșit. Dacă fișierul
ab+ există, este deschis în modul anexare cu indicatorul plasat la sfârşitul fişierului dacă nu este
creat unul nou pentru citire și scriere.
Tab18. Descrierea modurilor de acces open() pentru fișiere în Python

[buffering]: Dacă este setată o valoare de 1, interpretul va salva liniile în timp ce accesăm
fișierul. Dacă valoarea este mai mare decât 1, alocarea memoriei va depinde de dimensiunea
memoriei tampon. Când valoarea este setată la 0 sau un număr negativ, acțiunea implicită
este că buffering nu va rula.
[codificare]: această opțiune este inclusă în această listă, dar se aplică numai fișierelor text.
Sistemele de operare diferite folosesc standarde de codare diferite pentru fișierele text.
Pentru Linux folosește „utf-8” în timp ce Windows folosește „cp1252”. Este o bună practică
de programare să specificăm tipul de codificare la manipularea fișierului text.
Să încercăm să deschidem fișierul nostru, days.txt:
Ex48
my_text = open ("/home/Computer/Python36-21/Examples/days.txt")
Nu uitați să înlocuiți calea de pe Ex48 cu calea către fișierul vostru text.

66
Elemente de programare
Introducere în Python
Corneliu Agapi

Citirea dintr-un fișier

Pentru a citi conținutul unui fișier, trebuie să îl deschideți mai întâi în modul de citire și să îl
atribuiți obiectul creat la o variabilă. Python oferă trei moduri de a citi datele stocate în fișier:

Utilizând metoda <file>.read()


Această metodă returnează tot conținutul fișierului ca un singur șir. Pentru a vizualiza
conținutul fișierului nostru days.txt folosind această metodă, vom scrie codul ca urmează:

my_text = open ("/home/Computer/Python36-21/Examples/days.txt")


My_text.read()

Utilizând metoda <file>.readline()


Această metodă citește fișierul deschis pe rând și returnează conținutul până la și inclusiv
următorul caracter newline.

my_text = open ("/home/Computer/Python36-21/Examples/days.txt")


My_text.readline()

Utilizând metoda <file>.readlines()


Această metodă returnează lista de linii din fișier, fiecare element din listă reprezentând un
rând în fișier.
my_text = open ("/home/Computer/Python36-21/Examples/days.txt")
My_text.readlines()

67
Elemente de programare
Introducere în Python
Corneliu Agapi

Scrierea într-un fișier

Un fișier trebuie să fie deschis în modul de scriere (‘w’), adăugare (‘a’) sau de creare exclusivă
(‘x’) în care să fie scris. Este important de știut că deschiderea fișierului în scriere modul (‘w’)
va avea ca rezultat suprascrierea conținutului fișierului dacă acesta există deja.
Metoda <fișier>.write() este folosită pentru a scrie un șir într-un fișier.
Ex49
my_text = open ("/home/Computer/Python36-21/Examples/Seasons.txt")

my_text.write("Seasons of the Year:\n")


my_text.write("Fall.\n")
my_text.write("Summer.\n")
my_text.write("Spring.\n")
my_text.write("Winter.\n")
Scriptul din acest exemplu va crea un fișier text nou numit Seasons.txt, face acest lucru dacă
nu există deja.

Închiderea unui fișier


Programul dumneavoastră trebuie să închidă corect un fișier atunci când utilizatorul a
terminat de citit sau a actualizat conținutul. Închiderea unui fișier este importantă deoarece
eliberează memoria și resursele de procesare utilizate de fișierul deschis.
Un fișier este închis folosind metoda close().
Ex50
Seasons = open ("path/Seasons.txt")
#File operations
seasons.close()
Metoda close() nu este în întregime sigură, deoarece dacă apare o excepție în proces, codul
va ieși fără a închide fișierul. În etapele ulterioare ale studiului sau exersând Python, veți
încerca să închideți fișierul.

68
Elemente de programare
Introducere în Python
Corneliu Agapi

Metode de tip file în Python

Există un număr destul de mare de metode care vin cu obiectul fișier Python, unele despre
care am spus deja în acest capitol. Sunt multe altele cu care vă veți întâlni când exersați ceea
ce ați învățat aici și altele vă veți întâlni în stadii intermediare sau avansate de studiu în
Python.
Tabelul mai jos descrie câteva dintre cele mai comune.
Metodă Descriere
flush() Șterge memoria tampon de scriere a fluxului de fișiere.
readable() Returnează True dacă fișierul poate fi citit.
writable() Returnează True dacă în fișier poate fi scris.
seekable() Returnează True dacă fluxul de fișiere acceptă aleatoriu acces.
tell() Returnează locația curentă a fișierului.
Redimensionează fluxul de fișiere la octeții de „dimensiune” specificați. Dacă
truncate(size=None)
„dimensiunea” nu este specificată, se redimensionează la locația curentă.
Tab.19 Metode de tip file în Python

69
Elemente de programare
Introducere în Python
Corneliu Agapi

Capitolul 10: Concluzii

Că ai ajuns la ultimul capitol al acestei cărți este o dovadă pe care o ai a plătit prețul inițial
pentru a deveni un programator Python competent. Felicitări!
Acest manual de curs v-a ghidat prin cele mai importante subiecte pentru un începător în
programare cu Python, împreună cu 50 de exemple pe care sperăm că au făcut-o mai ușor de
înțeles ceea ce ai învățat. Sperăm că, în cazul dumneavoastră, am realizat ceea ce ne-am
propus.
Python este în prezent cel mai popular limbaj de programare și milioane de începători și
programatorii cunoscători în alte limbi își iau timp pentru învăța.
Fiind un program de uz general, Python este folosit aproape peste tot astăzi -- de la
dezvoltarea jocurilor front-end și sistemele de server web back-end la sisteme autonome
auto și electrocasnice și tot ce se află între. Având experiență de scris cod în Python, cu
siguranță capacitatea și valoarea dumneavoastră în lumea modernă va avea o altă valoare.
Procesul de învățare a elementelor de bază ale Python e posibil să fi fost descurajantă sau
frustrantă, pentru tine, dar ți-ai câștigat drepturile de laudă ale unui programator (sau
dezvoltator, oricare doriți).
Am încercat să facem această carte ușor de făcut înțeles, practic și, mai important, distractiv.
Totuși, totul în asta cartea te poate duce doar la jumătatea drumului către competență; restul
procesului învățării vă va solicita un efort în plus.

70
Elemente de programare
Introducere în Python
Corneliu Agapi

Pentru viitor

Acum că ați ajuns la sfârșitul cărții, ce urmează? Nu vom abandona. Iată câteva indicații pe
care le veți găsi extrem de benefice.

Consultați tutorialele oficiale Python


Tutorialele oficiale Python de pe python.org sunt o mină de aur pentru cei mai entuziaști
cursanți care doresc o explicație tehnică și profesională a oricăror lucuri de programat.
Asigurați-vă că verificați ce ceea ce citiți.

Faceți din Wikibooks prieteni


Una dintre cele mai bune surse pentru a învăța ceva nou pe internet este prin intermediul
wikibooks. Wikibooks pe Python oferă asistență solidă, precisă și concisă pentru cursanții
care caută răspunsuri la aproape orice întrebare fără a deveni prea tehnic.

Tutoriale online
Tot ce ai învățat până acum este explicat în cel puțin un alt tutorial pe internet, deși cu o
abordare sau cu exemple diferite. Cele mai multe tutoriale sunt disponibile cu capturi de
ecran sau diagrame și chiar și platforme online IDLE în direct care vă permit să testezi codul
direct din browser. Acestea includ Python-ul lui Nettuts+ de la Resursa Scratch și Tutorials
Point (http://tutorialspoint.com/python3/)

Treceți la următoarea carte


Investiția într-o carte creată cu grijă ca aceasta este de departe cel mai de încredere mod de
a învăța un subiect precum programarea Python. Acum că ai terminat toate elementele de
bază, poate următorul tău pas va fi să găsești o carte pentru nivelul intermediar apoi avansați
pentru Python.

Obțineți toate răspunsurile la StackOverflow


Dacă nu ați creat un cont la StackOverflow, faceți-o acum. Acesta este unul loc în care
milioane de dezvoltatori pun și răspund la întrebări tuturor problemă cu care te vei
confrunta vreodată. Ați întâmpinat o nouă eroare pe care nu o înțelegeți? Cineva de la
StackOverflow vă va explica. Cel mai adesea vei găsi altcineva a pus deja tipul tău de întrebare
și a primit dreptul răspuns(e).

Practicați la Project Euler și CodeFights


Cu ceea ce știi până acum, abia poți crea o aplicație funcțională. Singura modalitate de a
consolida ceea ce ai învățat este prin practică. Două dintre cele mai populare locuri pentru a

71
Elemente de programare
Introducere în Python
Corneliu Agapi

vă flexibiliza abilitățile de codare sunt Proiectul Euler (http://projecteuler.net) și CodeFights


(http://codefights.com). Verifică-i.

Construiește un joc
Nimic nu este la fel de satisfăcător pentru un dezvoltator în devenire precum construirea
propriului său joc. Curba de învățare pentru dezvoltarea unui joc jucabil poate fi abruptă, dar
va fi foarte plină de satisfacții în acest proces. Puteți începe să utilizați PyGame
(http://www.pygame.org/news) bibliotecă cu unul dintre miile de tutoriale gratuite pentru
a dezvolta un joc simplu Python pentru a consolida ceea ce ai învățat și a-l pune în aplicare
practică.

Familiarizați-vă cu instrumentele și bibliotecile comune Python


Există o sursă aparent nesfârșită de instrumente și biblioteci Python pentru aproape orice
scop pe internet. Pentru a începe, consultați PyPy (http://pypy.org/), NumPy + SciPy
(http://numpy.scipy.org), BeautifulSoup, Biblioteca de imagini Python
(http://www.pythonware.com/products/pil/) și cadrul Django (http://djangoproject.com).

Implicați-vă în proiecte open source


Dacă credeți că aveți o înțelegere decentă a limbajului Python și că îl puteți aplica la aplicații
din viața reală, cel mai bun mod de a învăța în timp ce faci este să te alături la dezvoltatori
sursă pe Github sau Bitbucket și contribuie la proiectele în derulare. Veți putea vedea
abordările pe care le folosesc alți dezvoltatori pentru a rezolva problemele și dezvoltați-vă
abilitățile de scris programe cu fiecare linie de cod pe care o scrieți.
Acestea sunt doar câteva dintre cele mai bune locuri în care să mergi în continuare, acum că
ești înarmat cu abilitățile esențiale de codare Python pe care trebuie să le construiți continuu
până când veți deveni un profesionist.

72
Elemente de programare
Introducere în Python
Corneliu Agapi

73

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