Sunteți pe pagina 1din 13

Tutorial Python

1. Introducere in limbajul Python


- A fost inventat în 1991 de Guido van Rossum;
- Python este 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;
- Python se poate conecta la baze de date. 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ă de aici: https://www.python.org/downloads/.

Pentru IDE:

- Eclipse - 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 (de asemenea, această versiune de Eclipse poate fi utilizată);
- PyCharm - accesați:
https://www.jetbrains.com/pycharm/download/#section=windows.

Linkuri utile:

Documentație: https://www.python.org/about/gettingstarted/

https://www.tutorialspoint.com/python/index.htm

https://www.w3schools.com/python/default.asp
Exemple: https://www.programiz.com/python-
programming/examples
Pachete: https://pip.pypa.io/en/stable/installing/
Rezolvări: https://stackoverflow.com

1
2. Elemente de programare: tipuri de date, variabile. tipuri de variabile, operatori, vectori,
structuri alternative si repetitive.
2.1 Variabile
În Python, variabilele sunt case-sensitive.
Denumirea variabilelor trebuie să înceapă cu o literă sau underscore (nu cu un număr) și poate
conține numai caractere alfanumerice: de la A-z, 0-9, și _.
Spre deosebire de alte limbaje, în Python variabilele nu se declară explicit, fiind necesar să i se
atribuie valoare.
2.2 Tipuri de date
2.2.1 Numeric
 int
 float
 complex

Pentru afișare utilizăm print.


Exemplu 1 Exemplu 2
Pentru a combina un șir de caractere cu o variabilă, utilizăm +, care are rolul de a
concatena:
x = "MongoDB" x = "Seminar "
print("Seminar " + x) y = "MongoDB"
z= x+y
print(z)

Exemplu 3 Exemplu 4
Pentru numere, + acționează ca operator Însumarea unui număr cu un șir de
matematic: caractere, duce la eroare: TypeError:
unsupported operand type(s) for +:
'int' and 'str'
x=5 x=5
y = 10 y = "Python"
print(x + y) print(x + y)

Exemplu 5 Exemplu 6
Variabile de tipul numeric sunt create atunci Pentru a verifica tipul de data in Python
cand li se atribuie valoare. Nu necesita utilizam functia type():
declarare.
x = 1 # int print(type(x))
y = 2.8 # float print(type(y))
z = 1j # complex print(type(z))
Int sau integer reprezintă un număr întreg, pozitiv sau negativ, fără zecimale, de lungime
nelimitată.
2
Exemplu 7
x=1
y = 35656222554887711
z = -3255522
print(type(x))
print(type(y))
print(type(z))
Float reprezintă un număr pozitiv sau negativ, cu una sau mai multe zecimale.
Exemplu 8 Exemplu 9
x = 1.10 x = 35e3
y = 1.0 y = 12E4
z = -35.59 z = -87.7e100
print(type(x)) print(type(x))
print(type(y)) print(type(y))
print(type(z)) print(type(z))
Numerele complexe complex conțin "j" care desemnează partea imaginară.
Exemplu 10
x = 3+5j
y = 5j
z = -5j
print(type(x))
print(type(y))
print(type(z))
Specificarea tipului de dată pentru o variabilă
Atunci când se dorește specificarea tipului de dată pentru o variabilă, utilizăm următorii
constructori:
 int() - construiește un număr întreg dintr-un număr întreg, un număr cu zecimale (prin
eliminarea zecimalelor) sau un șir de caractere (când șirul reprezintă un număr întreg);
 float() - construiește un număr cu zecimale dintr-un număr întreg, un număr cu
zecimale sau un șir de caractere (când șirul reprezintă un număr întreg sau un număr cu
zecimale);
 str() - construiește un șir de caractere dintr-o varietate de tipuri de date, incluzând
șiruri de caractere, numere întregi și numere cu zecimale.
Exemplu 11 Exemplu 12 Exemplu 13
x = int(1) # x will be 1 x = float(1) # x will be 1.0 x = str("s1") # x will be 's1'
y = int(2.8) # y will be 2 y = float(2.8) # y will be 2.8 y = str(2) # y will be '2'
z = int("3") # z will be 3 z = float("3") # z will be 3.0 z = str(3.0) # z will be '3.0'
w = float("4.2") # w will be 4.2

2.2.2 Șiruri de caractere


Sunt încadrate de “ ” sau ‘ ’. Ca în multe alte limbaje de programare, șirurile de caractere în
Python sunt considerate ca vectori.
Parantezele [ ] sunt utilizate pentru a accesa elementele șirului.

3
Exemplu 14 Exemplu 15 Exemplu 16 Exemplu 17
Obținerea Extragerea unui Metoda strip() Metoda len()
caracterului de la subșir. Obținerea elimină spațiile: returnează lungimea
poziția 1 (primul caracterelor de la șirului:
caracter are poziția poziția 2 to 5
0): (exclusiv):
a = "Seminar Mongo b = "Seminar Mongo a=" Seminar a = "Seminar Mongo
DB" DB" Mongo DB" DB"
print(a[1]) print(b[2:5]) print(a.strip()) print(len(a))
# returns "Seminar
Mongo DB"
print(a)

Exemplu 18 Exemplu 19 Exemplu 20 Exemplu 21


Metoda lower() Metoda upper() Metoda replace() Metoda split()
transformă șirul în transformă șirul în înlocuiește un șir cu împarte șirul în mai
litere mici: litere mari: un alt șir: multe șiruri după un
separator:
a = "Seminar Mongo a = "Seminar Mongo a = "Seminar Mongo a = "Seminar, Mongo
DB" DB" DB" DB"
print(a.lower()) print(a.upper()) print(a.replace(" ", "")) print(a.split(",")) # se
obtine o lista de valori
['Seminar', ' Mongo
DB']

Se poate schimba tipul de date al unei variabile pe parcursul prelucrării.


Exemplu 23
Exemplu 22
Nu este necesar să se precizeze tipul de data Tipul de data al variabilei poate fi schimbat
al variabilei ulterior
x=5
x = 4 # x este de tip int
y = "Python"
x = "Python" # acum x este de tip str
print(x)
print(x)
print(y)
2.3 Tipuri de variabile
Colecții de date
2.3.1 Liste – colecții de date care pot fi ordonate și modificate. De asemenea, listele permit
elemente identice.
Listele sunt reprezentate utilizând [ ].
Exemplu 22 Exemplu 23 Exemplu 24
Accesarea elementelor din Modificarea unui
Crearea și afișarea unei liste
listă se realizează prin index: element:

4
lista = ["laptop", "creion", lista = ["laptop", "creion", lista = ["laptop", "creion",
"flipchart"] "flipchart"] "flipchart"]
print(lista) print(lista[1]) lista[1] = "carioca"
print(lista)

Pentru a determina numărul de elemente din listă, utilizăm metoda len():

Exemplu 25

lista = ["laptop", "creion", "flipchart"]


print(len(lista))

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

Exemplu 26

lista = ["laptop", "creion", "flipchart"]


lista.append("rucsac")
print(lista)

Pentru a adăuga un element în listă la o anumită poziție, utilizăm metoda insert()

Exemplu 27

lista = ["laptop", "creion", "flipchart"]


lista.insert(1, "rucsac")
print(lista)

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

lista = ["laptop", "creion", "flipchart"]


lista.remove("laptop")
print(lista)

Metoda pop() elimină elementul de la indexul specificat sau ultimul element în cazul în care
indexul nu este specificat:

lista = ["laptop", "creion", "flipchart"]


lista.pop()
print(lista)

Și metoda del elimina elementul de la indexul specificat:

lista = ["laptop", "creion", "flipchart"]


del lista [0]
print(lista)

Metoda del poate șterge întreaga lista:

5
lista = ["laptop", "creion", "flipchart"]
del lista
print(lista) #apare o eroare deoarece lista nu mai există

Metoda clear() golește lista:

lista = ["laptop", "creion", "flipchart"]


lista.clear()
print(lista)

Este posibilă crearea unei liste prin intermediul constructorului list().

lista = list(("laptop", "creion", "flipchart")) #observați parantezele rotunde duble


print(lista)

Metode pentru liste

Metoda Descriere
append() Adaugă un element la sfârșitul listei
clear() Elimină toate elementele listei
copy() Crează o copie a listei
count() Returnează numărul de apariții al elementului în listă
extend() Adăugă elemente la sfârșitul unei liste
index() Returnează indexul unui element
insert() Adaugă un element la poziția specificată
pop() Elimină elementul de la poziția specificată
remove() Elimină elementul specificat
reverse() Inversează ordinea elementelor în listă
sort() Sortează lista

2.3.2 Tupluri – colecții de date ordonate și nemodificabile. Tuplurile permit elemente identice.
Tuplurile sunt reprezentate utilizând ( ).

Exemplu 28 Exemplu 29 Exemplu 30


Crearea și afișarea unui tuplu: Accesarea elementelor din Modificarea unui element
tuplu se realizează prin index: nu este posibilă, tuplul
rămâne nemodificat.
tuplu = ("laptop", "creion", tuplu = ("laptop", "creion", tuplu = ("laptop", "creion",
"flipchart") "flipchart") "flipchart")
print(tuplu) print(tuplu[1]) tuplu[1] = "carioca"
TypeError: 'tuple'
object does not
support item
assignment

Metode pentru tupluri

Metoda Descriere
count() Returnează numărul de apariții al elementului în tuplu

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

2.3.3 Seturi – colecții de date neordonate și neindexate. Nu sunt acceptate elemente identice.
Seturile sunt reprezentate prin { }.
Exemplu 31
Crearea și afișarea unui set (fiind elemente neordonate, afișarea este aleatoare):
set = {"laptop", "creion", "flipchart"}
print(set)

Accesarea elementelor din set nu este posibilă, dar elementele pot fi parcurse cu for sau
poate fi verificată existența unui element cu 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
și 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
prezente în alt set (seturi) specificat(e)
isdisjoint() Arată dacă două seturi se intersectează sau nu
issubset() Arată dacă un set este inclus într-un alt set sau nu
issuperset() Arată dacă un set conține un alt set sau nu
pop() Elimină elementul specificat
remove() Elimină elementul specificat
symmetric_difference() Returnează un set reprezentând diferența simetrică a
două seturi
symmetric_difference_update() Inserează diferențele simetrice dintre două seturi
union() Returnează un set reprezentând reuniunea a două
seturi
update() Actualizează setul cu reuniunea dintre un set și altele

2.3.4 Dicționare – colecții de date neordonate, modificabile și indexate. Nu sunt admise


elemente duplicate. Dicționarele sunt reprezentate prin { }, având suplimentar chei și valori.

Exemplu 32 Exemplu 33 Exemplu 34

7
Accesarea elementelor din Modificarea unui element
Crearea și afișarea unui
dicționar se realizează prin din dicționar se
dicționar:
cheie (sau prin metoda realizează prin cheie:
get()):

dictionar = {"laptop":"IBM", dictionar = {"laptop":"IBM", dictionar = {"laptop":"IBM",


"creion":"Faber Castell", "creion":"Faber Castell", "creion":"Faber Castell",
"flipchart":"M3"} "flipchart":"M3"} "flipchart":"M3"}
print(dictionar) x = dictionar["laptop"] dictionar["laptop"] = "HP"
print (x) print(dictionar)

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
items() Returnează o listă conținând un tuplu pentru fiecare pereche cheie valoare
keys() Returnează o listă conținând cheile dicționarului
pop() Elimină elementul având o anumită cheie specificată
popitem() Elimină ultima pereche adăugată cheie valoare
setdefault() Returnează valoarea pentru o cheie specificată. Dacă cheia nu există, o
adaugă
update() Actualizează dicționarul cu perechile cheie-valoare specificate
values() Returnează o listă cu toate valorile dicționarului

2.4 Operatori

 Aritmetici

Operator Denumire Exemplu


+ Adunare x+y
- Scădere x-y
* Înmulțire x*y
/ Împărțire x/y
% Restul împărțirii x%y
** Exponențial x ** y
// Partea întreagă a împărțirii x // y

 Atribuire

Operator Exemplu Echivalent


= x=5 x=5
+= x += 3 x=x+3
-= x -= 3 x=x-3
*= x *= 3 x=x*3

8
/= 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
>>= x >>= 3 x = x >> 3
<<= x <<= 3 x = x << 3

 Comparatie

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

 Logici

Operator Descriere Exemplu


and Returnează True dacă x < 5 and x < 10
ambele expresii sunt
adevărate
or Returnează True dacă cel x < 5 or x < 4
puțin o expresie este
adevărată
not Negația, inversează not(x < 5 and x < 10)
rezultatul returnând False
dacă rezultatul este adevărat

 Identitate

Operator Descriere Exemplu


is Returnează True dacă x is y
ambele variabile sunt același
obiect
is not Returnează True dacă x is not y
ambele variabile nu sunt
același obiect

 Apartenență

Operator Descriere Exemplu


in Returnează True dacă o x in y
secvență cu o valoare

9
specificată este prezentă în
obiect
not in Returnează True dacă o x not in y
secvență cu o valoare
specificată nu este prezentă
în obiect

2.5 Structuri de programare


Chiar dacă în alte limbaje indentarea nu e relevantă, în Python indentarea este esențială, fiind
utilizată pentru a indica un bloc de cod.

2.5.1 Structuri alternative


Exemplu 35 Exemplu 36
x=-100 a = 1
if x<0: b = 3
print('x negativ') if a<b:
elif x==0: print('a mai mic decat b')
print('zero') IndentationError: expected an indented
else: block
print('x pozitiv')

2.5.2 Structuri repetitive


Exemplu 37 Exemplu 38
lista = ["laptop", "creion", lista = ["laptop", "creion",
"flipchart"] "flipchart"]
for w in lista: for w in lista:
print (w) print (w[0])
print (len(w))

Exemplu 39 Exemplu 40 Exemplu 41


lista = ["laptop", lista = ["laptop", lista = ["laptop",
"creion", "flipchart"] "creion", "flipchart"] "creion", "flipchart"]
for x in lista: for x in lista: for x in lista:
print(x) if x == "creion": if x == "creion":
if x == "creion": break continue
break print(x) print(x)

Exemplu 42. Funcția range() returnează o Exemplu 43. Clauza else se execută când se
secvență de numere de la 0 la 5 termină for
for x in range(6): for x in range(6):
print(x) print(x)
else:
for x in range(2, 6):
print("S-au afisat numerele")
print(x)
for x in range(2, 30, 3):
print(x)

10
Exemplu 44. Nested loop
lista = ["laptop", "creion",
"flipchart"]
culori = ["rosu", "galben", "verde"]
for x in lista:
if x =='creion' or x =='flipchart':
for y in culori:
print(x, y)

while

Exemplu 45 Exemplu 46 Exemplu 47


i=1 i=1 i=0
while i < 6: while i < 6: while i < 6:
print(i) print(i) i += 1
i += 1 if i == 3: if i == 3:
break continue
i += 1 print(i)

O funcție se definește prin intermediul lui def. Funcția my_function, având parametru
implicit 100
Exemplu 48 Exemplu 49 Exemplu 50
def my_function(x): def my_function(x = 100): def my_function(x,
result = x**2 result = x**2 n):
print (result) print (result) result = x**n
return result return result print (result)
my_function() my_function(5) return result
TypeError: my_function() my_function(4,2)
missing 1 required
positional argument: 'x'

Pentru introducerea unor valori de la tastatura, se utilizează funcția predefinită input


Exemplu 51 Exemplu 52
str = input("Introduceti numele: "); x=int(input('Introduceti numarul:'))
print ("Numele introdus este : ", str) if x>0:
print('nr pozitiv')
else: print('nr este zero sau negativ')

Funcția lambda este o funcție simplă, anonimă poate avea mai mulți parametri și o singură
expresie, retunând rezultatul expresiei.
Exemplu 53 Exemplu 54 Exemplu 55
x = lambda a : a + 10 x = lambda a, b : a * b x = lambda a, b, c : a + b + c
print(x(5)) print(x(5, 6)) print(x(5, 6, 2))
print(x(23))

11
Exerciții
1. Să se citească un număr n < 10, să se creeze o listă de numere întregi de dimensiune n și să
se adauge elementele citite de la tastatură. Să se ordoneze crescător elementele listei și să se
afișeze lista.
n=int(input('Introdu numarul de elemente: '))
lista=[]
if n < 10:
for x in range(n):
x = int(input('Introdu elementul: '))
lista.append(x)
else: print('Numar prea mare (n<10). Reintroduceti numarul')
print(lista)
lista.sort()
print(lista)

2. Să se creeze o lista de 5 elemente cu denumirile unor orașe introduse de la tastatură.


Să se realizeze o funcție care returnează lungimea fiecărui element (oraș) și să se afișeze lista
ordonată descrescător în funcție de această lungime.

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)

def lungime(e):
return len(e)

lista = ['Bucuresti', 'Iasi', 'Iasi', 'Sibiu', 'Pitesti', 'Braila']

lista.sort(reverse = True, key = lungime)

print(lista)

3. 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.
lista = [['telefon', 1000,2], ['laptop', 4500, 4],
['tableta',2000,5],['tv',2500,3]]
for r in lista:
valoare=r[1]*r[2]
print (valoare)
r.append(valoare)
lista.sort(key=lambda x: x[3])
print (lista)

4. Să se creeze două liste – cu numele și prenumele angajaților și clienților


lista_angajati=['Popescu Vasile','Ionescu Gigel', 'Pop Maria']
lista_clienti=['Ionescu Gigel', 'Costache Ioana', 'Anton Eugenia']
Să se afișeze numele angajatului care este și client.

lista_angajati=['Popescu Vasile','Ionescu Gigel', 'Pop Maria']


lista_clienti=['Ionescu Gigel', 'Costache Ioana', 'Anton Eugenia']
lista_angajati.extend(lista_clienti)

12
for r in lista_angajati:
if lista_angajati.count(r) > 1:
print(r)

5. Să se creeze o listă de dicționare cu următoarele chei: id, nume și salariul pentru următorii
angajați:
lista = [{"id":1, "nume":"Popescu", "salariul":5000}, {"id":2, "nume":"Ionescu",
"salariul":4000}, {"id":3, "nume":"Vasilescu", "salariul":6000}]
Dacă angajații au salariul mai mic decât 5000, să se majoreze cu 10%.
lista = [{"id":1, "nume":"Popescu", "salariul":5000}, {"id":2, "nume":"Ionescu",
"salariul":4000}, {"id":3, "nume":"Vasilescu", "salariul":6000}]
cu următoarele chei: id, nume
for dict in lista:

if dict["salariul"] < 5000:


print(dict)
s=dict["salariul"]
print(s)
dict.update(salariul = s*1.1)
print(lista)

13