Sunteți pe pagina 1din 53

Variabile şi tipuri de date

in Python

lect.univ.
Branişte Rodica
Paradigme de programare

O paradigmă de programare este un stil fundamental de programare,


adică un set de instrumente conceptuale furnizate de un limbaj de programare
pentru scrierea codului sursă al unui program, definind astfel modul în care
programatorul concepe și percepe programul în sine.

Diferite paradigme diferă în conceptele și abstracțiile utilizate pentru a


reprezenta elementele unui program (cum ar fi funcțiile, obiectele, variabilele,
constrângerile etc.) și în procedurile utilizate pentru executarea datelor
procedurilor de procesare (atribuire, calcul, iterație , fluxul de date etc.).
Tipuri de paradigme
În practica dezvoltării de software , se poate identifica o „linie principală” de paradigme de
programare:
• programare modulară (mijlocul anilor 1970 ) Modula , pentru aplicații specifice:
CLU (limbă)
• programare concurentă (pentru calcul pe arhitecturi
• programare orientată pe aspect (O extensie a OOP paralele ( anii 1970 ) Erlang , Procese secvențiale de
( anii 2000 ) AspectJ comunicare (CSP), Occam , Go)
• programare orientată către utilizator (Microsoft • programare logică (aplicații euristice , inteligență
Windows NT Internet Development (1998 Microsoft Press), artificială etc; ( 1970 ) Prolog)
platforma .NET
• programare funcțională (Pentru aplicații matematice și
• programare orientată obiect (( 1980 ) Smalltalk , Eiffel , științifice etc; ( 1970 ) Lisp , Haskell)
C ++ , Java , Python , Ruby , platforma .NET
• programare orientată spre evenimente (Pentru
• programare structurată după tipare (Java , Sun Java aplicații în timp real și interfețe grafice)
• programare pentru potrivirea tiparelor (Expresii • programare constrângere
regulate)
• programare procedurală (( 1960 ) Fortran , Cobol , F #...)
• programare structurată (începutul anilor 1970 ) Pascal ,
C.
• programare pentru tipuri de date abstracte ((sfârșitul
anilor 1970 ) OBJ)
Paradigme de programare în Python
Orientat
Funcţională
pe obiecte Imperativă

Modulară Procedurală
Structurată
Programare imperativă
• Paradigma imperativă descrie Avantaje: Programarea interactivă
programarea ca o secvenţă de instrucțiuni este uşor de învăţat, destul de
sau comenzi, ce schimbă starea unui înţeleasă
program.
Dezavantaje: poate face codul mai
• Codul mașină, în general, se bazează pe
lung, să minumizeze scalabilitatea.
paradigma imperativă
*scalabilitatea este o proprietate a unui sistem, a
• Implementarea hardware a majorității unei rețele sau a unui proces, proprietate care
calculatoarelor este imperativă. arată capacitatea acelui sistem de a suporta corect
un volum mai mare de încărcare, sau de a permite
#incrementare i mărirea sau extinderea sa.Un sistem de prelucrare
a datelor, de exemplu, este scalabil dacă el se
i=0 comportă similar, fără defecțiuni, atunci când
while i < 10: volumul de date pe care le prelucrează devine mai
mare. De asemenea, un sistem poate fi considerat
i=i+1 scalabil și dacă este capabil să ofere rezultate
îmbunătățite în condițiile în care îi sunt adăugate
print(i) resurse adiționale (de regulă, hardware).
10
Programare procedurală
• Paradigma de programare procedurală este difinită ca o paradigmă de
programare care permite programului să fie organizat ca un set de funcţii.
• Fiecare funcţie constă din enunţuri de calcul şi rezolvă o parte a problemei.
• În programarea procedurală, funcţia devine cea mai importantă componentă a
programului şi funcţiile au acces nerestricţionat la datele globale.
Funcţia 4

Date
Funcţia 3
globale

Programul Funcţia 2

Date
Funcţia 1
globale
Programarea structurată
Programarea structurată este o metodă independentă de limbajul de programare, ea
acţionând la nivelul stilului de lucru.
Programarea structurată reprezintă o maniera de concepere a programelor potrivit unor
reguli bine stabilite, utilizând un anumit set, redus, de tipuri de structuri de control. O structură de
control înseamnă o combinaţie de operaţii utilizată în scrierea algoritmilor.
Orice program are intrări, ieşiri, adică punct de început şi de sfârşit şi poate fi reprezentat printr-o
combinaţie de trei structuri de control fundamentale, numite:
 Secvenţa (structura liniară)
 Decizia (structura alternativă)
 Ciclul (structura repetativă)
Scopul programării structurate este elaborarea unor programe uşor de scris, de depanat şi de
modificat (actualizat) în caz de necesitate. Programele obţinute sunt clare, ordonate, inteligibile, fără
salturi si reveniri. Programarea structurată permite ca programele să poată fi scrise în limbaj
pseudocod, limbaj independent de maşină, apropiat de cel natural, convertibil în orice limbaj de
programare.
Programele au la bază algoritmi de calcul ce se pot transpune în scheme logice, ca de ex:
START

instrucțiune

secvenţă
instrucțiune

da nu
?

instrucțiune instrucunţie
decizie
ciclu
instrucțiune instrucțiune

instrucțiune

STROP
Programare modulară
Programare modulară este o tehnică program
utilizată pentru dezvoltarea de software, în
care programul este împărțit în multe
componente sau blocuri autonome mici
numite module sau subprograme, care sunt
ușor de gestionat, logice și funcționale. GUI
(interfața Biblioteca de
Baza
Baza de
de date
date
Modulul este un bloc de instrucțiuni grafică a calcule
care rezolvă o anumită problemă. Fiecare utilizatorului)
modul conține tot ceea ce este necesar
pentru a-și îndeplini propria funcționalitate și
poate fi editat sau modificat fără a afecta
restul proiectului.
Avantaje: Acțiuni Operații
Afișare Operații Operații Funcţii
de de
Permite reutilizarea modulelor ferestre
control scriere
de citire logice utile
Ușurează lucrul în echipă
Permite o mai bună utilizare a codului sursă
Programarea funcțională
Programarea funcțională este un model de dezvoltare software. Acesta estimează și aplică
funcții matematice, mai degrabă decât date de stare sau mutabile și fire de cod imperative.
Originile reale ale programării funcționale sunt calculul lambda și științele sistemului formal,
care aplică definirea funcției, aplicarea și recursiunea.

double = lambda x: x * 2
print(double(5))

Răspuns: 10

#Normal python function


def a_name(x):
return x+x
#Lambda function
lambda x: x+x
Programarea orientată pe obiecte
POO este o paradigmă de programare care
folosește concepte abstracte sub formă de
clase şi obiecte pentru a crea modele bazate
pe elemente din lumea reală.
Un obiect este un amestec de mai multe
variabile şi funcţii.
O clasă este o combinație de caracteristici şi
de comportamente.
Variabile şi tipuri de date in Python

• O variabilă este o zonă rezervată de memorie în interiorul căreia putem păstra


informaţii și mai târziu prelua datele folosind "numele“ variabilei.
• Variabilele stocheaza o valoare care poate fi analizata sau schimbata ulterior.
• Programatorii aleg numele variabilelor. Aveți posibilitatea să modificați conținutul
unei variabile într-o declarație ulterioară.
în funcţie de tipul informaţiei pe care o păstrează, o variabilă poate fi de mai multe
tipuri. Tipul unei variabile se mai numeşte şi tip de date.
• În Python crearea unei variabile se realizează atunci când îi atribuim pentru prima
dată o valoare
• Tipul de date asociat acesteia va fi determinat de interpretator în momentul
rulării codului.
• Pentru a crea o variabilă, folosim sintaxa: nume_variabila = valoare. Exemplu: x=4
Reguli de scriere a variabilelor

• Trebuie să înceapă cu o literă Exemple:


sau caracterul underscore _ 1. Corecte: spam, spam14, _spam
• Poate să conțină doar litere și 2. Incorecte: 14spam, #spam,
numere și caracterul underscore spam.14
• Case sensitive (abilitatea de a 3. Diferite: Spam, spam, SPAM.
face diferenţă dintre caracterele
majuscule şi cele scrise cu
minuscule).
Exemplu de cod:
Cuvinte ce nu pot fi utilizate la denumirea variabilelor
Instrucţiuni

Instrucțiuni de atribuire
• Vom atribui o valoare unei variabile folosind instrucțiunea de
atribuire (=)
• O declarație de atribuire constă dintr-o expresie de pe partea dreaptă
și o variabilă pentru a stoca rezultatul

x = 5.7*x*(2+x)
Atribuire multiplă

• Variabilele a și b iau valorile 2 și


respectiv 4. Evaluarea expresiilor
din partea dreaptă a unei atribuiri
se face înainte de orice atribuire.
• Evaluarea se face de la stânga la
dreapta.
Exemple atribuire multiplă
Modelul de date
Toate datele într-un program Python sunt obiecte
Un obiect are :
•o identitate – adresa lui în memorie
•un tip – care determină operațiile posibile precum și valorile pe care le poate
lua obiectul
•o valoare.
Odată creat, identitatea și tipul obiectului nu mai pot fi modificate.
Valoarea unor obiecte se poate modifica
• Obiecte mutabile - se poate modifica
• Obiecte ne-mutabile – nu se poate modifica
Tipurile de date standard în Python
Type()

Tipul datelor - Un set de valori.


Tipul de valoare determină modul în care poate fi utilizată variabila în expresii.
Valorile sunt de tip:
• Numeric
• Șiruri de caractere (de tip string).
• Listă
• Tuplă
• Dicţionar
• Set
Tipurile de date numerice
Python ne oferă suport pentru 3 tipuri de numere:
• int (numere întregi),
• float (numere reale, cu virgulă)
• complex (numere complexe)

Exemple de numere întregi: 12, -123, 69420


Exemple de numere reale: 12.2, 1.0, -12.452
Exemple de numere complexe: 1 + 3j, 15, -12 + 4j

Putem să schimbăm tipul de date oricând ne dorim. Tot ce trebuie să facem este să apelăm una dintre
funcţiile built-in (preinstalate) cu numele specific tipului de date dorit.
Mai sus am creat o variabilă numită x cu valoarea 2.0. Am folosit apoi funcţia type() pentru a afla tipul de
date. Apoi folosim funcţia int() pentru a converti valoarea de tip float a variabilei noastre într-una de tip int
(număr întreg). Astfel am realizat conversia de la un număr float la un int.
Şiruri de caractere
Acest tip de date mai poartă şi numele de string şi este folosit pentru a
păstra caractere, cuvinte sau propoziţii. Valorile acestui tip pot fi scrise între
ghilimele simple ('') sau duble (""). Deci, un string reprezintă orice tip de text
inclus între ghilimele simple, duble sau triple.
Exemplu : variabila = “Marius”
Este posibilă utilizarea operatorilor de adunare şi înmulţire, însă rolul lor
este un pic diferit. Atunci când "adunăm" două stringuri spunem că
le concatenăm, iar rezultatul va fi un nou string format din cele două alipite.
Înmulţirea se face doar asupra unui singur şir de caractere şi are drept
efect multiplicarea acelei valori de câte ori indică numărul cu care este înmulţit.
Exemple:
Pentru concatenare vom folosi semnul +, iar pentru a multiplica scrierea unui string folosim *

>>>string1 = “Marius"
>>>string2 = “Crăciun"
>>>print(string1 + string2)
MariusCrăciun

>>>print(string1 * 3)
MariusMariusMarius

Pentru a verifica apartenenţa unui substring la un string, putem folosi cuvântul cheie in.
>>> s1 = 'Python'
>>> 'i' in s1
False
>>> 'y' in s1
Formatarea textului
Prin formatare vom intelege posibilitatea de a crea un string în mod dinamic
folosind valori păstrate în variabile.
Prima şi cea mai simplă metodă de formatare o reprezintă concatenarea
stringurilor implicate folosind operaţia de adunare:
>>> nume = ‘Marius'
>>> ani = 23
>>> 'numele meu este ' + nume + ' si am ' + str(ani) + ' ani'
'numele meu este Marius si am 23 ani’
Observaţi convertirea variabilei ani folosind funcţia str(). Fără această convertire,
am primi eroare deoarece nu putem adăuga un string şi un număr.
A doua metodă de formatare o reprezintă folosirea caracterului %:
>>> nume = ‘Marius'
>>> ani = 23
>>> 'numele meu este %s si am %d ani' % (nume, ani)
'numele meu este Marius si am 23 ani’

%s indică faptul că pe acea pozitie se asteaptă un element de tip string,


iar %d indică prezenţa unui element de tip întreg.
A treia metodă de formatare a Ultima metodă de formatare (da,
stringurilor este metoda format(). încă mai sunt) presupune
adaugarea caracterului f înaintea
şirului nostru de caractere, iar
>>> nume = ‘Marius' între acolade, vom trece numele
variabilelor pe care vrem să le
>>> ani = 23 includem în formatare (de această
>>> 'numele meu este {} si am {} dată, numele variabilelor din
ani'.format(nume, ani) acolade trebuie să coincidă cu cel
'numele meu este Marius si am 23 din declarare).
ani'
>>> nume = ‘Marius'
>>> ani = 23
>>> f'numele meu este {nume} si
am {ani} ani'
'numele meu este Marius si am 23
ani'
Liste
O listă în Python este o structură de date mutabilă care poate conţine mai multe
elemente separate prin virgulă.
• Pentru a defini o listă se folosesc paranteze pătrate.[]
• Elementele listei vor fi scrise în interiorul acestor paranteze şi vor fi separate de o
virgulă.
De exemplu: [1, 2, 2.3, "Salut", 6]
• Pentru a identifica un element într-o listă avem nevoie de poziţia acestuia în lista
respectivă. Poziţia poartă numele de index şi se începe de la 0 (primul element) până la
lungimea listei minus 1.
• Pentru a afla lungimea unei liste folosim funcţia len()
• Pentru a accesa un element dintr-o listă folosind paranteze pătrate [index] imediat
după valoarea sau numele variabilei corespunzător listei.
• Pentru a adăuga într-o listă putem folosi metoda .append() care primeşte ca parametru
elementul ce va fi adăugat în listă.
Exemple de liste
Operaţii cu liste

• pentru a selecta dintr-o listă putem • Un index negativ va începe numărătoarea


folosi:
de la capătul din dreapta al listei (de la
>>> x = [1, 2, 'text', [4, 'alt text'], 3.5]
finalul listei):
>>> x[2]
>>> x = [1, 2, 'text', [4, 'alt text'], 3.5]
'text'
>>> x[-1]
>>> x[1:3] 3.5
[2, 'text'] >>> x[-3]
>>> x[:3] 'text'
[1, 2, 'text'] >>> x[:-2]
>>> x[3:] [1, 2, 'text']
[[4, 'alt text'], 3.5] >>> x[-3:-1]
>>> x[3][0]
Răspuns:
Răspuns: ['text', [4, 'alt text']]
4
Metodele specifice de prelucrare a stringurilor

• Python are un număr de funcții string, care se află în biblioteca string


• Aceste funcții sunt predefinite - noi doar le invocăm prin alipirea
funcției la variabila șir
• Aceste funcții nu modifică șirul inițial, în schimb, ele returnează un nou
șir de caractere care a fost modificat
Metodele specifice de prelucrare a stringurilor
Metodele
upper() - returnează șirul original în majuscule,
lower() - returnează șirul original în litere mici,
capitalize() - returnează șirul original unde
primul cuvânt începe cu literă mare
title() - returnează șirul original unde toate
cuvintele încep cu o literă mare

Exemplu Rezultat
Metodele specifice de prelucrare a stringurilor

Metodele strip(), rstrip(), lstrip()


Funcția strip() elimină spațiile de la începutul și sfârșitul șirului.
Funcția lstrip() elimină spațiile de la începutul șirului (l -left)
Funcția rstrip() elimină spațiile de la sfârșitul șirului (r -right)
Exemplu

Rezultat
Metodele specifice de prelucrare a stringurilor
Metodele strip(), rstrip(), lstrip()

Exemplu

Rezultat
Metodele specifice de prelucrare a stringurilor

Metodele
find(), rfind()
find() găsește un subșir în șir și returnează poziția unde începe subșirul
Dacă subșirul nu poate fi găsit, atunci funcția find() returnează -1
Exemplu Rezultat

3 este indexul unde dorim să începem căutarea len(s1) este indexul unde dorim să oprim
căutarea
Metodele specifice de prelucrare a stringurilor

Metodele find(), rfind()


rfind() găsește un subșir în șir și returnează poziția unde începe subșirul
Dacă subșirul nu poate fi găsit, atunci funcția rfind() returnează -1

Exemplu

Rezultat
Metodele specifice de prelucrare a stringurilor
Metodele index(), rindex()
index() returnează poziția primei apariții a șirului căutat
Dacă șirul nu poate fi găsit, atunci funcția returnează excepție.
rindex() returnează poziția ultimei apariții a șirului căutat
Exemplu

Rezultat
Metodele specifice de prelucrare a stringurilor
Metodele count(), replace()
count() numără aparițiile unui subșir într-un șir
replace(old_subs, new_subs) înlocuiește un subșir cu un altul
Exemplu

Rezultat
Metodele specifice de prelucrare a stringurilor

Metodele split(), splitlines()


s.split() împarte șirul s într-o listă de subșiruri
Separarea se face în funcție de parametrul pe care îl primește funcția split().
Implicit separatorul este caracterul spațiu
Exemplu

Rezultat
Metodele specifice de prelucrare a stringurilor
Metodele split()
Separator poate fi orice caracter
Exemplu

Rezultat
Metodele specifice de prelucrare a stringurilor

Metodele split(), splitlines()


splitlines() împarte șirul la semnul ‘\n’ (rând nou) și returnează o listă
Exemplu

Rezultat
Metodele specifice de prelucrare a stringurilor

Metode de verificare
 isalpha() returnează True dacă șirul constă doar din litere, altfel - False
 isalnum() returnează True dacă șirul este format din cifre și litere, altfel – False
 isdigit() returnează True dacă șirul este format din cifre, altfel – False
 islower() returnează True dacă șirul este format din caractere minuscule, în caz contrar -
False
 isupper() returnează True dacă șirul este format din caractere mari, altfel - False
 isspace() returnează True dacă șirul constă din caractere care nu sunt
afișate
(spații, etc.), altfel – False
 istitle () returnează True dacă toate cuvintele încep cu o literă mare în șir
Metodele specifice de prelucrare a stringurilor

Metode de verificare

Exemple
Rezultatele
Parcurgerea stringurilor

Folosind while, o variabilă de iterație, și funcția len, putem construi o buclă să parcurgem
fiecare literă din șirul de caractere în mod individual
Parcurgerea stringurilor

Ciclul for este mult mai elegant. Variabila de iterație este complet luată de către for
Exemple de probleme cu stringuri
Exemple de probleme cu stringuri
Exemple de probleme cu stringuri
Tuple
O tuplă este o structură de date imutabilă (constantă) care poate păstra mai
multe elemente separate prin virgulă. Ea este precum o listă.
Astfel, având o tuplă t = (1, 2, 3), dacă încercăm să adăugam un element nou
t = t + (4,), totul va fi ok. Mai mult, putem chiar multiplica elementele acestei
tuple fără nici o problemă (de exemplu t * 2), exact cum am văzut în cazul listelor.
Însă, ce se întâmplă dacă vrem să schimbăm primul element cu valoarea 5?
>>> t[0] = 5
Traceback (most recent call last):
File "", line 1, in
t[0] = 5
TypeError: 'tuple' object does not support item assignment

Am primit eroare. Acelaşi lucru se va întâmpla şi dacă am vrea să ştergem un


O tuplă are câteva avantaje faţă de listă:

Ne permite să indicăm faptul că această structură nu este menită


să fie modificată (vrem să fie tratată drept constantă);
Fiind imutabilă, nu mai are nevoie să fie pregătită pentru
extindere şi modificare, lucru care îi permite să fie mai rapidă şi să
ocupe mai puţin spaţiu decât o listă.
Dicţionare
Un dicţionar este un tip de date mutabil, care poate păstra informaţii într-o
structură cheie-valoare, unde cheia trebuie să fie unică.

Proprietăţi:
•Nu pot exista chei duplicat;
•Dicţionarul este un tip de date mutabil, însă cheile sale trebuie să fie de tip
imutabil (numeric, string sau tuplă);
•Valorile pot fi orice tip de date;
•Putem avea chei şi valori de diferite tipuri într-un dicţionar;
• Un dicţionar este tot un container, asemeni listei, însă în loc să păstreze doar o
serie de elemente, un dicţionar păstrează o serie de perechi de elemente
• Fiecare pereche va fi compusă dintr-o cheie şi o valoare.
• Cheia este folosită pentru a identifica valoarea (asemeni indexului în cazul
listelor), iar valoarea este ceea ce vrem cu adevărat să păstrăm în acel dicţionar.
• Un dicţionar este creat folosind acolade {}, iar perechile sunt despărţite de
virgulă. Fiecare pereche va avea cheile şi valorile separate de caracterul ":".
• Structura generală este {cheie1: valoare1, cheie2: valoare2,...}
• Exemple: {'a': 1, 'b': 2, 'c': 3}, {1: 'a', 'b': [1, 3, 4]}
• Valorile unui dicţionar pot fi de orice tip de date, însă cheile au câteva restricţii.
Toate cheile din dicţionar trebuie să fie unice şi pot fi din tipurile string, numeric
sau (tupla).
• Pentru a identifica un element, în cazul dicţionarelor se va folosi cheia.
Exemple de dicţionare create

>>> orase = {1: 'Timisoara', 2: >>> orase_ro = {1: 'Timisoara', 2: 'Bucuresti', 3:


'Londra', 3: 'Budapesta', 4: 'New 'Iasi'}
York'} >>> orase_uk = {1: 'Londra', 2: 'Glasgow', 3:
>>> orase[2] = 'Sofia' 'Liverpool'}
>>> orase >>> orase = {'ro': orase_ro, 'uk': orase_uk}
{1: 'Timisoara', 2: 'Sofia', 3: >>> orase
'Budapesta', 4; 'New York'} {'ro': {1: 'Timisoara', 2: 'Bucuresti', 3: 'Iasi'},
'uk': {1: 'Londra', 2: 'Glasgow', 3: 'Liverpool'}}
>>> orase['ro'][1]
'Timisoara'
Multumesc pentru atenţie!

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