Sem Python 1
Sem Python 1
Seminar Python 1
1. Introducere in limbajul Python
Python este un limbaj interpretat, orientat-obiect;
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)
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 29/02/2020, 17:28
Sem-Python-1 file:///G:/My Drive/Didactic/__2019_20/PacheteSoftware/Seminar/Se...
In [ ]: #Exemplul 3
x = 5
y = 10
print(x + y)
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.')
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
2 of 20 29/02/2020, 17:28
Sem-Python-1 file:///G:/My Drive/Didactic/__2019_20/PacheteSoftware/Seminar/Se...
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))
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 29/02/2020, 17:28
Sem-Python-1 file:///G:/My Drive/Didactic/__2019_20/PacheteSoftware/Seminar/Se...
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')
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 29/02/2020, 17:28
Sem-Python-1 file:///G:/My Drive/Didactic/__2019_20/PacheteSoftware/Seminar/Se...
Ș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)
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.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 29/02/2020, 17:28
Sem-Python-1 file:///G:/My Drive/Didactic/__2019_20/PacheteSoftware/Seminar/Se...
In [ ]: #Exemplul 23
lista1 = ["laptop", "creion", "flipchart"]
lista2 = [ 1, 'abc', 2.5 ]
lista3 = [] #listă vidă
print(lista1)
In [ ]: #Exemplul 24
lista = ["laptop", "creion", "flipchart"]
print(lista[1])
In [ ]: #Exemplul 25
lista[1] = "marker"
print(lista)
In [ ]: #Exemplul 26
#lista = ["laptop", "creion", "flipchart"]
print(len(lista))
In [ ]: #Exemplul 27
#lista = ["laptop", "creion", "flipchart"]
lista.append("rucsac")
print(lista)
In [ ]: #Exemplul 28
#lista = ['laptop', 'creion', 'flipchart', 'rucsac']
lista.insert(1, "telefon")
print(lista)
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 29/02/2020, 17:28
Sem-Python-1 file:///G:/My Drive/Didactic/__2019_20/PacheteSoftware/Seminar/Se...
In [ ]: #Exemplul 30
#lista = ['telefon', 'marker', 'flipchart', 'rucsac']
print(lista.pop())
print(lista)
In [ ]: #Exemplul 31
#lista = ['telefon', 'marker', 'flipchart']
del lista[0]
print(lista)
In [ ]: #Exemplul 32
#lista = ["laptop", "creion", "flipchart"]
del lista
print(lista) #eroare: variabila nu (mai) este definită
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)
Metoda Descriere
extend() Adăugă elemente din altă listă (obiect iterabil), la sfârşitul listei.
sort() Sortează lista (modifică ordinea elementelor). Funcția sorted() returnează o copie sortată a listei (lista inițială nu este modificată).
7 of 20 29/02/2020, 17:28
Sem-Python-1 file:///G:/My Drive/Didactic/__2019_20/PacheteSoftware/Seminar/Se...
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 ( ).
In [ ]: #Exemplul 35
tup = ("laptop", "creion", "flipchart")
print(tup)
print(tup[1])
In [ ]: #Exemplul 36
tup[1] = "marker" # eroare !
Metoda Descriere
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'))
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 29/02/2020, 17:28
Sem-Python-1 file:///G:/My Drive/Didactic/__2019_20/PacheteSoftware/Seminar/Se...
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() .
Metoda Descriere
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
isdisjoint() Arată dacă două seturi sunt disjuncte (nu au elemente comune)
issubset() Arată dacă un set este inclus într-un alt set (submulțime)
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.
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"))
9 of 20 29/02/2020, 17:28
Sem-Python-1 file:///G:/My Drive/Didactic/__2019_20/PacheteSoftware/Seminar/Se...
In [ ]: #Exemplul 41
#dict = {"laptop":"IBM", "creion":"Faber Castell", "flipchart":"M3"}
dict["laptop"] = "HP"
print(dict)
Metoda Descriere
get() Returnează valoarea pentru o anumită cheie, sau None pt cheie inexistentă.
setdefault() Returnează valoarea pentru o cheie specificată. Dacă cheia nu există, o adaugă și o asociază cu valoarea specificată (sau None)
10 of 20 29/02/2020, 17:28
Sem-Python-1 file:///G:/My Drive/Didactic/__2019_20/PacheteSoftware/Seminar/Se...
11 of 20 29/02/2020, 17:28
Sem-Python-1 file:///G:/My Drive/Didactic/__2019_20/PacheteSoftware/Seminar/Se...
+ Adunare x+y
- Scădere x-y
* Înmulţire x*y
/ Împărţire x/y
** Exponenţial x ** y
= 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
== Egal x == y
!= Diferit x != y
Operatori logici
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
isnot Returnează True dacă ambele variabile nu sunt acelaşi obiect x isnot y
Apartenenţă
12 of 20 29/02/2020, 17:28
Sem-Python-1 file:///G:/My Drive/Didactic/__2019_20/PacheteSoftware/Seminar/Se...
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
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))
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 29/02/2020, 17:28
Sem-Python-1 file:///G:/My Drive/Didactic/__2019_20/PacheteSoftware/Seminar/Se...
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()
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.")
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 29/02/2020, 17:28
Sem-Python-1 file:///G:/My Drive/Didactic/__2019_20/PacheteSoftware/Seminar/Se...
In [ ]: #Exemplul 53
i = 1
while i < 6:
print(i)
i += 1
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 29/02/2020, 17:28
Sem-Python-1 file:///G:/My Drive/Didactic/__2019_20/PacheteSoftware/Seminar/Se...
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)
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 ).
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 29/02/2020, 17:28
Sem-Python-1 file:///G:/My Drive/Didactic/__2019_20/PacheteSoftware/Seminar/Se...
Pentru a putea folosi elementele din module (funcții, variabile, clase etc.), modulul respectiv sau componente ale sale trebuie
importate.
In [ ]: #Exemplul 58
import math #import 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 !
In [ ]: #Exemplul 60
import math as m, platform as p
print(round(m.pi, 5))
print(p.platform())
In [ ]: #Exemplul 61
import math
dir(math)
17 of 20 29/02/2020, 17:28
Sem-Python-1 file:///G:/My Drive/Didactic/__2019_20/PacheteSoftware/Seminar/Se...
In [ ]: #Exemplul 62
def func1(x): #definire funcție
rez = x**2
print (rez)
return rez
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))
In [ ]: #Exemplul 65
def func_rec(k):
if(k>0):
rez = k + func_rec(k-1)
print(rez)
else:
rez = 0
return rez
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 29/02/2020, 17:28
Sem-Python-1 file:///G:/My Drive/Didactic/__2019_20/PacheteSoftware/Seminar/Se...
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).
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.
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)
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).
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.
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 29/02/2020, 17:28
Sem-Python-1 file:///G:/My Drive/Didactic/__2019_20/PacheteSoftware/Seminar/Se...
20 of 20 29/02/2020, 17:28