Sunteți pe pagina 1din 19

Sem-Python-1

Seminar Python 1
1. Introducere in limbajul Python
Python este un limbaj interpretat, orientat-obiect;

A fost inventat în 1991 de Guido van Rossum;


Sunt disponibile două versiuni majore: Python 2 și Python 3 (programele nu sunt direct compatibile între versiuni). Acest
curs se axează pe sintaxa Python 3.
Python este un limbaj de programare de ultimă generaţie, uşor de învăţat, ca urmare a sintaxei simple similare cu limba
engleză;
Necesită mai puţine linii de cod în comparaţie cu alte limbaje;
Python rulează pe diferite sisteme de operare: Windows, Mac, Linux, Raspberry Pi etc.;
Limbajul poate fi utilizat în mai multe medii (IDE): Eclipse, PyCharm, Thonny, Netbeans etc.;
Conţine o bibliotecă vastă de pachete (biblioteci) specializate ( de ex. data science, inteligență artificială, grafică etc.)
Programele Python pot accesa baze de date de diverse tipuri;
Citeşte şi modifică fişiere;
Poate gestiona volume mari de date (big data) şi efectua operaţii matematice complexe.

Instalare Ultima versiune Python poate fi descărcată aici: https://www.python.org/downloads/ (https://www.python.org


/downloads/). Pentru IDE:

accesaţi: www.eclipse.org. Efectuaţi apoi setarea IDE pentru Python ca în https://www.ics.uci.edu/~pattis/common


/handouts/pythoneclipsejava/eclipsepython%20neon.html (https://www.ics.uci.edu/~pattis/common/handouts
/pythoneclipsejava/eclipsepython%20neon.html) (de asemenea, această versiune de Eclipse poate fi utilizată);
sau accesaţi: https://www.jetbrains.com/pycharm/download/#section=windows (https://www.jetbrains.com/pycharm
/download/#section=windows).

Linkuri utile:
Documentaţie:https://www.python.org/about/gettingstarted/ (https://www.python.org/about/gettingstarted/)
https://www.tutorialspoint.com/python/index.htm (https://www.tutorialspoint.com/python/index.htm)
https://www.w3schools.com/python/default.asp (https://www.w3schools.com/python/default.asp)
Exemple:https://www.programiz.com/python-programming/examples (https://www.programiz.com/python-programming
/examples)
Pachete:https://pip.pypa.io/en/stable/installing/ (https://pip.pypa.io/en/stable/installing/)
Rezolvări:https://stackoverflow.com (https://stackoverflow.com)

Afișare cu funcția print() , operatorul +


Funcția print() afișază una sau mai multe valori (expresii) pe ecran.
Pentru a combina un şir de caractere cu o variabilă, utilizăm +, care are rolul de a concatena:

Selectează celulele cu instrucțiuni și apasă Shift+Enter pentru a executa codul !

In [ ]: #Exemplul 1
x = "Pachete Software"
print("Seminar " + x)

In [ ]: #Exemplul 2
x = "Seminar "
y = "Pachete Software"
z = x + y
print(z)

1 of 20
Sem-Python-1

Pentru valori numerice, + acţionează ca operator matematic:

In [ ]: #Exemplul 3
x = 5
y = 10
print(x + y)

Însumarea unui număr cu un şir de caractere produce o eroare:

In [ ]: #Exemplul 4
x = 5
y = "Python"
print(x + y)

La utilizarea funcției print() cu mai multe argumente, valorile sunt separate cu spațiu. La final se introduce un caracter
newline (\n).
Acești delimitatori impliciți se pot schimba cu argumentele sep și end .

In [ ]: #Exemplul 5
print('Python', 'versiunea', 3.8)
print('A doua linie de text.')

In [ ]: #Exemplul 6
print('Python', 'versiunea', 3.8, sep='_', end='|')
print('A doua linie de text.')

2. Elemente de programare: tipuri de date, variabile, expresii. Operatori,


liste (vectori), structuri alternative și repetitive

2.1 Tipuri de date

2.1.1 Tipuri de date elementare:

int
float
complex
bool
str Variabilele Python sunt create prin atribuirea unei valori. Tipul de date al variabilei este implicit tipul valorii utilizate.
Variabilele nu necesită declarare (!).

In [ ]: #Exemplul 7
x = 1 # int
y = 2.8 # float
z = 2+3j # complex
b = True # bool
s = 'Python' #string

Pentru a verifica tipul de dată utilizăm funcția type() :

2 of 20
Sem-Python-1

In [ ]: #Exemplul 8
print(type(x))
print(type(y))
print(type(z))
print(type(b))
print(type(s))

Tipul int (integer) reprezintă un număr întreg, pozitiv sau negativ, fără zecimale, de lungime nelimitată.

In [ ]: #Exemplul 9
x = 1
y = 35656222554887711
z = -3255522
print(type(x))
print(type(y))
print(type(z))

Tipul float reprezintă un număr pozitiv sau negativ, cu una sau mai multe zecimale.

In [ ]: #Exemplul 10
x = 1.10
y = 1.0
z = -35.59
print(type(x))
print(type(y))
print(type(z))

In [ ]: #Exemplul 11
x = 35e3
y = 12E4
z = -87.7e100
print(type(x))
print(type(y))
print(type(z))

Tipul ( complex ) reprezintă numere complexe; conţine "j" pentru partea imaginară.

In [ ]: #Exemplul 12
x = 3+5j
y = 5j
z = -5j
print(type(x))
print(type(y))
print(type(z))

Funcții de conversie a tipurilor de date / constructori


Atunci când se doreşte conversia unei valori la un anumit tip de date, utilizăm următoarele funcții (constructori de tipuri):

int() – returnează o valoare int pe baza argumentului transmis, care poate fi int, float sau string. Șirul de caractere
trebuie să reprezinte un număr valid, altfel se produce o eroare;
float() – similar, returnează o valoare float;
str() – convertește alte tipuri de date (ca int, float) în șiruri de caractere;
bool() – convertește alte tipuri de date în valori True sau False (pt. reguli vezi acest link (https://docs.python.org
/3/library/stdtypes.html#truth))

3 of 20
Sem-Python-1

In [ ]: #Exemplul 13
x = int(1) # 1
y = int(2.8) # 2
z = int("3") # 3
print(x, y, z, sep='\n')

In [ ]: #Exemplul 14
x = float(1) # 1.0
y = float(2.8) # 2.8
z = float("3") # 3.0
w = float("4.2") # 4.2
print(x, y, z,w, sep='\n')

In [ ]: #Exemplul 15
x = str("s1") # 's1'
y = str(2) # '2'
z = str(3.0) # '3.0'
print(x, y, z, sep='\n')

In [ ]: #Exemplul 16
b1 = bool(22)
b2 = bool(0)
b3 = bool('Text')
b4 = bool('')
print(b1, b2, b3, b4, sep='\n')

2.1.2 Șiruri de caractere și delimitatori – "…" sau '...'.

Valorile literal de tip șir de caractere se scriu între ghilimele sau apostrof. Dacă șirul conține un caracter de acest tip (de ex.
apostrof), trebuie folosit celălalt delimitator (ghilimele).
O altă posibilitate este folosirea secvențelor escape \' or \". Apostroful triplu ''' ... ''' poate fi folosit pentru șiruri cu linii multiple.

In [ ]: #Exemplul 17
#s1 = 'Jerry's Pizza' # eroare; comentați (#) linia și rulați din nou.
s2 = "Jerry's Pizza"
s3 = '"OK", spuse ea.'
s4 = "El a zis \"Bine\"."
s5 = '''Șirurile cu apostrof triplu pot conține ' și ",
precum și text pe mai multe linii.'''
print(s2, s3, s4, s5, sep='\n')

Ca în alte limbaje de programare, şirurile de caractere în Python sunt considerate ca "vectori de caractere". Parantezele [
] sunt utilizate pentru a accesa elementele şirului pe baza unui index (poziție) între 0 și lungimea șirului -1.
Indexul poate fi negativ - de ex. sir[-1] este ultimul caracter din șir.
Notația slice [m:n] realizează extragerea de subșiruri. Se preiau caracterele de la poziția m până la poziția n-1. Dacă m
lipsește [:n] , subșirul pornește de la primul caracter; de asemenea, dacă n lipsește [m:] , subșirul se încheie cu ultimul
caracter.

In [ ]: #Exemplul 18
a = "Seminar Pachete Software"
print(a[1])
print(a[4:8])
print(a[-1])
print(a[:4])
print(a[-7:])
print(a[:])
print(a[::2]) #notație slice cu pasul 2

4 of 20
Sem-Python-1

Șirurile sunt obiecte, deci se pot apela metode pentru prelucrarea lor, în forma:
var_string.metoda( arg )
Metoda strip() elimină spaţiile de la începutul și sfârșitul șirului:

In [ ]: #Exemplul 19
a = " Seminar Pachete Software "
print(a.strip())
print(a)

Alte funcții / metode pentru șiruri:


Funcția len() returnează lungimea şirului;
Metoda lower() transformă şirul în litere mici;
Metoda upper() transformă şirul în litere mari;
Metoda replace() înlocuieşte un (sub)şir cu un alt şir;
Metoda split() împarte şirul în mai multe şiruri după un separator.

In [ ]: #Exemplul 20
a = "Seminar Pachete Software"
print(len(a))
print(a.lower())
print(a.upper())
print(a.replace(" ", ""))
print(a.split(" ")) # generează o listă de cuvinte

2.2 Variabile
Codul Python este case-sensitive, lucru valabil și pentru numele de variabile.
Denumirea variabilelor trebuie să înceapă cu o literă sau underscore (nu cu o cifră) şi poate conţine numai caractere
alfanumerice: de la A-Z, a-z, 0-9 şi underscore.
Variabilele nu se declară explicit, ci prin atribuire.

In [ ]: #Exemplul 21
x = 5
y = "Python"
print(x)
print(y)

Tipul de data al variabilei poate fi schimbat ulterior prin atribuirea unei valori de alt tip (!).

In [ ]: #Exemplul 22
x = 4 # x de tip int
print(x, type(x))
x = "Python" # x este acum de tip str
print(x, type(x))

2.3 Structuri de date (colecţii de date)

2.3.1 Liste

Listele sunt colecţii de date care pot fi ordonate şi modificate (eng. mutable). De asemenea, listele permit elemente identice.
Listele sunt reprezentate utilizând [ ], iar elementele sunt separate cu virgulă.

5 of 20
Sem-Python-1

Crearea şi afişarea listelor:

In [ ]: #Exemplul 23
lista1 = ["laptop", "creion", "flipchart"]
lista2 = [ 1, 'abc', 2.5 ]
lista3 = [] #listă vidă
print(lista1)

Accesarea elementelor din listă se realizează prin index:

In [ ]: #Exemplul 24
lista = ["laptop", "creion", "flipchart"]
print(lista[1])

Modificarea unui element:

In [ ]: #Exemplul 25
lista[1] = "marker"
print(lista)

Funcție len() determină numărul de elemente al listei.

In [ ]: #Exemplul 26
#lista = ["laptop", "creion", "flipchart"]
print(len(lista))

Pentru a adăuga un element în listă (la capăt), utilizăm metoda append() .

In [ ]: #Exemplul 27
#lista = ["laptop", "creion", "flipchart"]
lista.append("rucsac")
print(lista)

Pentru a insera un element în listă la o anumită poziţie, utilizăm metoda insert() .

In [ ]: #Exemplul 28
#lista = ['laptop', 'creion', 'flipchart', 'rucsac']
lista.insert(1, "telefon")
print(lista)

Eliminarea unui element se realizează cu metoda remove() :

In [ ]: #Exemplul 29
#lista = ['laptop', 'telefon', 'marker', 'flipchart', 'rucsac']
lista.remove("laptop")
print(lista)

Metoda pop() elimină și returnează ultimul element, sau elementul de la indexul specificat. Împreună cu append() se
poate utiliza pentru a implementa o structură de tip stivă (LIFO).

6 of 20
Sem-Python-1

In [ ]: #Exemplul 30
#lista = ['telefon', 'marker', 'flipchart', 'rucsac']
print(lista.pop())
print(lista)

Pentru ștergere se poate folosi și instrucțiunea del :

In [ ]: #Exemplul 31
#lista = ['telefon', 'marker', 'flipchart']
del lista[0]
print(lista)

del poate șterge întreaga listă:

In [ ]: #Exemplul 32
#lista = ["laptop", "creion", "flipchart"]
del lista
print(lista) #eroare: variabila nu (mai) este definită

Metoda clear() goleşte lista:

In [ ]: #Exemplul 33
lista = ["laptop", "creion", "flipchart"]
lista.clear()
print(lista)

Este posibilă crearea unei liste prin intermediul constructorului list() , din alte tipuri de obiecte (șir, tuplu, set etc.)

In [ ]: #Exemplul 34
lista = list(("laptop", "creion", "flipchart")) #creare listă din tuplu
print(lista)

Metode pentru liste

Metoda Descriere

append() Adaugă un element la sfârşitul listei

clear() Elimină toate elementele listei

copy() Creează o copie a listei

count() Returnează numărul de apariţii al elementului în listă

extend() Adăugă elemente din altă listă (obiect iterabil), la sfârşitul listei.

index() Returnează indexul primului element cu valoarea specificată

insert() Adaugă un element la poziţia specificată

pop() Extrage elementul de la poziţia specificată / ultimul.

remove() Elimină elementul specificat

reverse() Inversează ordinea elementelor în listă

sort() Sortează lista (modifică ordinea elementelor). Funcția sorted() returnează o copie sortată a listei (lista inițială nu este modificată).

7 of 20
Sem-Python-1

In [ ]: #Exercițiul 0.a: Sortați lista folosind list.sort() și sorted();


#Cum se poate schimba direcția de sortare (descrescător) ?
#Căutați detalii în documentația online.

#...scrieți instrucțiunile aici...#

2.3.2 Tupluri

Tuplurile sunt colecţii de date ordonate şi nemodificabile (eng. immutable). Ca și listele, tuplurile permit elemente identice.
Tuplurile sunt reprezentate utilizând paranteze ( ).

Crearea şi afişarea unui tuplu, accesarea elementelor prin index:

In [ ]: #Exemplul 35
tup = ("laptop", "creion", "flipchart")
print(tup)
print(tup[1])

Modificarea unui element nu este posibilă - produce o eroare.

In [ ]: #Exemplul 36
tup[1] = "marker" # eroare !

Metode pentru tupluri:

Metoda Descriere

count() Returnează numărul de apariţii al elementului în tuplu

index() Returnează poziţia unui element în tuplu

In [ ]: #Exemplul 37
#tup = ("laptop", "creion", "flipchart")
tup = tup + ('creion',) #concatenare cu tuplu cu un singur element
print(tup)
print(tup.count('creion'))
print(tup.index('flipchart'))

2.3.3 Seturi (mulțimi)

Seturile sunt colecţii de date neordonate şi neindexate. Nu sunt acceptate elemente identice. Seturile sunt reprezentate prin {
}. Pot fi create și cu ajutorul constructorului set() . Obiectele set permit operații pe mulțimi, ca reuniunea, intersecția,
diferența și diferența simetrică.

In [ ]: #Exemplul 38
set1 = {"laptop", "creion", "flipchart"}
print(set1)

lista1 = [2, 7, 3, 2]
set2 = set(lista1)
print(set2)

8 of 20
Sem-Python-1

Accesarea elementelor din set nu este posibilă, dar elementele pot fi parcurse cu instrucțiunea for ; existenţa unui element
poate fi verificată cu operatorul in .

Nu pot fi modificate elementele unui set, însă pot fi adăugate elemente noi cu metoda add() .

Metode pentru seturi

Metoda Descriere

add() Adaugă un element

clear() Elimină toate elementele setului

copy() Returnează o copie a setului

difference() Returnează un set reprezentând diferenţa dintre două sau mai multe seturi

difference_update() Elimină elementele dintr-un set care sunt conţinute de un alt set specificat

discard() Elimină un element specificat

intersection() Returnează un set reprezentând intersecţia a două seturi

intersection_update() Elimină elementele dintr-un set care nu sunt în alt set

isdisjoint() Arată dacă două seturi sunt disjuncte (nu au elemente comune)

issubset() Arată dacă un set este inclus într-un alt set (submulțime)

issuperset() Arată dacă un set conţine un alt set sau nu

pop() Extrage un element

remove() Elimină elementul specificat

symmetric_difference() Returnează un set cu elementele necomune celor doua seturi

symmetric_difference_update() Inserează într-un set diferenţele dintre două seturi

union() Returnează un set reprezentând reuniunea a două seturi

update() Actualizează setul cu reuniunea dintre un set şi altele

In [ ]: #Exercițiul 0.b: creați obiecte set și utilizați câteva metode, la alegere

2.3.4 Dicționare

Dicționarele sunt colecţii de date neordonate, modificabile şi indexate. Nu sunt admise elemente identice. Dicţionarele sunt
reprezentate prin { }, și conțin perechi cheie : valoare.

Crearea şi afişarea unui dicţionar:

In [ ]: #Exemplul 39
dict = {"laptop":"IBM", "creion":"Faber Castell", "flipchart":"M3"}
print(dict)

Accesarea elementelor din dicţionar se realizează prin cheie sau prin metoda get() :

In [ ]: #Exemplul 40
#dict = {"laptop":"IBM", "creion":"Faber Castell", "flipchart":"M3"}
print(dict["laptop"])
print(dict.get("laptop"))

Modificarea unui element din dicţionar se realizează prin cheie:

9 of 20
Sem-Python-1

In [ ]: #Exemplul 41
#dict = {"laptop":"IBM", "creion":"Faber Castell", "flipchart":"M3"}
dict["laptop"] = "HP"
print(dict)

Metode pentru dicţionare:

Metoda Descriere

clear() Elimină toate elementele din dicţionar

copy() Returnează o copie a dicţionarului

fromkeys() Returnează un dicţionar cu chei valori specificate

get() Returnează valoarea pentru o anumită cheie, sau None pt cheie inexistentă.

items() Returnează o listă conţinând tupluri cu perechi (cheie,valoare)

keys() Returnează o listă conţinând cheile dicţionarului

pop() Extrage elementul având o anumită cheie specificată

popitem() Extrage arbitrar o pereche (cheie,valoare).

setdefault() Returnează valoarea pentru o cheie specificată. Dacă cheia nu există, o adaugă și o asociază cu valoarea specificată (sau None)

update() Actualizează dicţionarul cu perechile cheie-valoare specificate

values() Returnează o listă cu toate valorile dicţionarului

In [ ]: #Exercițiul 0.c: creați un dicționar și utilizați câteva metode, la alegere.

10 of 20
Sem-Python-1

2.4 Operatori și expresii


Operatori aritmetici:

Operator Denumire Exemplu

+ Adunare x+y

- Scădere x-y

* Înmulţire x*y

/ Împărţire x/y

** Exponenţial x ** y

% Restul împărţirii (modulo) x%y

// Partea întreagă a împărţirii x // y

Atribuire, atribuire combinată

Operator Exemplu Echivalent

= x=5 x=5

+= x += 3 x=x+3

-= x -= 3 x=x-3

*= x *= 3 x=x*3

/= x /= 3 x=x/3

%= x %= 3 x=x%3

//= x //= 3 x = x // 3

**= x **= 3 x = x ** 3

Comparaţie

Operator Denumire Exemplu

== Egal x == y

!= Diferit x != y

> Mai mare x>y

< Mai mic x<y

>= Mai mare sau egal x >= y

<= Mai mic sau egal x <= y

Operatori logici

Operator Descriere Exemplu

and Returnează True dacă ambele expresii sunt adevărate x < 5 and x < 10

or Returnează True dacă cel puţin o expresie este adevărată x < 5 or x < 4

not Negaţia, inversează rezultatul, returnând False dacă rezultatul este adevărat not(x < 5 and x < 10)

Identitate

Operator Descriere Exemplu

is Returnează True dacă ambele variabile sunt acelaşi obiect x is y

isnot Returnează True dacă ambele variabile nu sunt acelaşi obiect x isnot y

Apartenenţă

Operator Descriere Exemplu

12 of 20
Sem-Python-1

2.5 Structuri de programare


În Python indentarea este esenţială, fiind utilizată pentru a delimita un bloc de cod.

2.5.1 Structura alternativă (condiționată) - if

In [ ]: #Exemplul 42
x=-100
#x = int(input ("Introduceți un număr: "))
if x<0:
print('x este negativ')
elif x==0:
print('x este zero')
else:
print('x este pozitiv')

Erorile de indentare pot modifica logica programului sau pot cauza chiar erori de sintaxă !

In [ ]: #Exemplul 43
a = 1
b = 3
if a<b:
print('a is lower than b') # eroare indentare

2.5.2 Structuri repetitive

Structura for :

In [ ]: #Exemplul 44
lista = ["laptop", "creion", "flipchart"]
for elem in lista:
print (elem)

In [ ]: #Exemplul 45
#lista = ["laptop", "creion", "flipchart"]
for cuv in lista:
print (cuv[0], len(cuv))

Instrucțiunea break întrerupe (termină) structura repetitivă:

In [ ]: #Exemplul 46
lista = ["laptop", "creion", "flipchart"]
for x in lista:
print(x)
if x == "creion":
break

In [ ]: #Exemplul 47
#lista = ["laptop", "creion", "flipchart"]
for x in lista:
if x == "creion":
break
print(x)

13 of 20
Sem-Python-1

Instrucțiunea continue întrerupe iterația curentă și trece la următoarea iterație.

In [ ]: #Exemplul 48
#lista = ["laptop", "creion", "flipchart"]
for x in lista:
if x == "creion":
continue
print(x)

Funcţia range() returnează o secvenţă de numere care poate fi folosită pentru iterare cu for .
Observați cum sunt generate secvențele:

In [ ]: #Exemplul 49
for x in range(6):
print(x, end=' ')
print()

for x in range(2, 6):


print(x, end=' ')
print()

for x in range(2, 30, 3):


print(x, end=' ')
print()

Crearea de liste bazate pe range() :

In [ ]: #Exemplul 50
print(list(range(6)))
print(list(range(2, 6)))
print(list(range(2, 30, 3)))

Clauza opțională else clause se execută după încheierea iterațiilor din for .

In [ ]: #Exemplul 51
for x in range(6):
print(x)
else:
print("Program ended.")

Struct. repetitivă imbricată (nested loop):

In [ ]: #Exemplul 52
lista = ["laptop", "creion", "flipchart"]
culori = ["roșu", "galben", "verde"]
for x in lista:
if x =='creion' or x =='flipchart':
for y in culori:
print(x, y)

Structura while :

14 of 20
Sem-Python-1

In [ ]: #Exemplul 53
i = 1
while i < 6:
print(i)
i += 1

break și continue pot fi utilizate ca la instr. for .

In [ ]: #Exemplul 54
i = 1
while i < 6:
print(i)
if i == 3:
break
i += 1

In [ ]: #Exemplul 55
i = 0
while i < 6:
i += 1
if i == 3:
continue
print(i)

15 of 20
Sem-Python-1

3. Funcții
Funcțiile sunt subprograme care primesc argumente (parametri) și returnează o valoare.
Funcțiile pot fi apelate independent sau în expresii:
var = nume_func( arg1, arg2, ...)
Valoarea returnată poate fi ignorată:
nume_func( arg1, arg2, ...)

Argumentele funcției pot fi poziționale sau numite (keyword arguments). Argumentele poziționale trebuie specificate în
ordinea stabilită prin definiția funcției.
Argumentele numite pot fi specificate în orice ordine, dar după argumentele poziționale:
nume_func(arg1, arg2, kwarg1=val1, kwarg2=val2)

În funcție de locul unde sunt definite, funcțiile Python pot fi:

Funcții proprii limbajului (built-in): fac parte din limbajul standard și sunt direct accesibile. Exemple: print(),
input(), len() .
Funcții definite în module. Pentru a fi accesate este necesară importarea modulului.
Funcții definite de utilizator folosind instrucțiunea def . Dintre acestea, funcțiile lambda sunt un caz special (cuvântul-
cheie lambda ).

3.1. Funcții built-in


Cîteva funcții uzuale, pe categorii:

I/O: input(), print()


Conversii de tip de date / constructori: int(), float(), bool(), str(), list(), dict(), tuple(),
set()
Funcții matematice: abs(), pow(), round(), bin(), oct(), hex()
Funcții de prelucrare liste (iterabile): len(), max(), min(), sum(), sorted(), reversed()
Fișiere: open()
Caractere: chr(), ord()
Diverse: type(), help(), dir() Lista tuturor funcțiilor built-in se găsește aici (https://docs.python.org/3/library
/functions.html#built-in-funcs).

Introducere de la tastatură
Funcția input() este utilizată pentru a prelua date de la tastatură. Returnează un șir de caractere. Valorile numerice
trebuiesc convertite conform tipului ( int, float etc.).

In [ ]: #Exemplul 56
nume = input("Cum te numești ?")
print ("Salut,", nume, "!")

In [ ]: #Exemplul 57
x=int(input('Introduceți un număr:'))
if x>0:
print(x,'este pozitiv.')
else:
print(x,'este negativ sau zero.')

16 of 20
Sem-Python-1

3.2 Funcții definite în module (biblioteci)


Există o gamă largă de module disponibile pentru diverse scopuri.
O parte dintre ele aparțin bibliotecii standard Python și sunt documentate în Python Library Reference
(https://docs.python.org/3/library/index.html). Pe lângă acestea, există numeroase module și pachete (packages) disponibile
în Python Package Index (https://pypi.org/) (vezi și lista modulelor după scopul de utilizare (https://wiki.python.org
/moin/UsefulModules)).

Pentru a putea folosi elementele din module (funcții, variabile, clase etc.), modulul respectiv sau componente ale sale trebuie
importate.

Importul unui modul în ansamblul său:

In [ ]: #Exemplul 58
import math #import modul;

print(math.sqrt(25)) #numele utilizate trebuie calificate,


#de ex. modul.functie()
print(math.pi)

Importul anumitor elemente dintr-un modul:

In [ ]: #Exemplul 59
from math import pi, sin, cos #import elemente;
print(sin(pi/2), round(cos(pi/2),2)) #nu e necesară calificarea !

În instrucțiunea import se pot defini aliasuri pentru module:

In [ ]: #Exemplul 60
import math as m, platform as p
print(round(m.pi, 5))
print(p.platform())

Funcția built-in dir() afișază numele definite în modul.

In [ ]: #Exemplul 61
import math
dir(math)

3.3 Funcții definite de utilizator


Funcțiile se definesc cu instrucțiunea def , urmată de numele funcției și lista argumentelor, apoi caracterul ':' . Corpul
funcției este indentat.
Pentru returnarea unei valori se folosește instrucțiunea return . În lipsa acesteia, funcția returnează implicit valoarea
None .
Documentația mai detaliată privind definirea funcțiilor este disponibilă aici (https://docs.python.org/3/tutorial
/controlflow.html#defining-functions).

17 of 20
Sem-Python-1

In [ ]: #Exemplul 62
def func1(x): #definire funcție
rez = x**2
print (rez)
return rez

#apelare funcție - corectați eroarea !


func1()

Argument cu valoare implicită 100:

In [ ]: #Exemplul 63
def func2(x=100):
rez = x**2
print (rez)
return rez

func2()
y=func2(5)
print(y)

In [ ]: #Exemplul 64
def func3(x,n):
rez = x**n
return rez

print(func3(4,3))

Definirea unei funcții recursive:

In [ ]: #Exemplul 65
def func_rec(k):
if(k>0):
rez = k + func_rec(k-1)
print(rez)
else:
rez = 0
return rez

print("Apel funcție recursivă:")


func_rec(6)

3.4 Funcții Lambda


O funcţia lambda este o funcţie simplă, anonimă poate avea mai mulţi parametri şi o expresie, returnând rezultatul expresiei.

In [ ]: #Exemplul 66
x = lambda a : a + 10
print(x(5))

In [ ]: #Exemplul 67
x = lambda a, b : a * b
print(x(5, 6))

In [ ]: #Exemplul 68
x = lambda a, b, c : a + b + c
print(x(5, 6, 2))

18 of 20
Sem-Python-1

Exerciţii
1) În programul următor, completați expresiile pentru a calcula ora de încheiere a unei activități. Se dă ora de începere (hh -
ora, mm - minute) și durata activității în minute.

Obs.: în codul de mai jos, metoda str.format() este utilizată pentru formatarea valorilor numerice în format hh:mm (de
ex. 09:35, 11:05). Vezi detalii în documentație (https://docs.python.org/3/tutorial/inputoutput.html#the-string-format-method).

In [ ]: hh = 9 #ora de începere; testează și cu hh=23


mm = 35
d = 90 # durata (minute)

mm2 = #scrie o expresie pentru ora de încheiere (minute)


hh2 = #scrie o expresie pentru ora de încheiere (ora)

print('Activitatea începe la: {:02d}:{:02d} și durează {} minute.'.format(hh,mm,


d))
print('Activitatea se încheie la: {:02d}:{:02d}.'.format(hh2,mm2))

2) Să se citească un număr n < 10, să se creeze o listă de numere întregi, cu dimensiunea n şi să se adauge elementele
citite de la tastatură. Să se ordoneze crescător elementele listei şi să se afişeze lista.

In [ ]: #Scrie codul aici:

3) Să se creeze o listă de 5 elemente cu denumirile unor oraşe. Să se afişeze lista ordonată descrescător după lungimea
șirului, utilizând opţiunile metodei 'sort()' - o funcție ce returnează lungimea șirului utilizată ca cheie de sortare.
Să se afișeze lista sortată.

Documentație list.sort():
list.sort(reverse=True|False, key=myFunc)
reverse Optional. reverse=True will sort the list descending. Default is reverse=False
key Optional. A function to specify the sorting criteria(s)

In [ ]: help(list.sort)

#Scrie codul aici:

4) Să se creeze o listă de liste cu denumiri de echipamente IT, preţul şi cantitatea acestora. Calculaţi valoarea fiecărui
echipament, adăugaţi-o în listă şi sortaţi în funcţie de valoare. (sugestie: folosiți metoda list.sort() și o funcție lambda
ca cheie de sortare).

In [ ]: #Scrie codul aici:

5) Să se creeze două liste: lista_angajati cu numele şi prenumele angajaţilor şi lista_clienti cu numele şi prenumele clienţilor.
a. Să se afişeze numele angajaților care sunt şi clienți.
b. Rezolvați tema folosind seturi și operații specifice acestora.

In [ ]: #Scrie codul aici:

6) Să se creeze o listă de dicţionare cu următoarele chei: id, nume şi salariu pentru următorii angajaţi: Popescu, Ionescu,
Vasilescu.
Dacă angajaţii au salariul mai mic decât 5000, să se majoreze salariul cu 10%.

19 of 20
Sem-Python-1

In [ ]: #Scrie codul aici:

20 of 20

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