You are on page 1of 30

Python Fundamentals I, II, III

Operatori Matematici

Operator Operatie Exemplu

** Exponent 2 ** 3 = 8

% Modulo/Rest 22 % 8 = 6

// Integer division/Floor 22 // 8 = 2
division

/ Impartire 22 / 8 = 2.75

* Inmultire 3 * 3 = 9

- Diferenta 5 - 2 = 3

+ Adunare 2 + 2 = 4
Exemple in shell-ul REPR:

>>> 2 + 3 * 6

20

>>> (2 + 3) * 6

30

>>> 2 ** 8

256

>>> 23 // 7

>>> 23 % 7

>>> (5 - 1) * ((7 + 1) / (3 - 1))

16.0

Tipuri de date
Tip de date Exemple

Integers - Intregi -2, -1, 0, 1, 2, 3, 4, 5

Floating-point numbers - Rationale -1.25, -1.0, --0.5, 0.0, 0.5, 1.0, 1.25

Strings - Siruri de caractere 'a', 'aa', 'aaa', 'Hello!', '11 cats'


Concatenarea si replicarea stringurilor
Concatenarea stringurilor:

>>> 'Alice' 'Bob'

'AliceBob'

>>> 'Alice' + 'Bob'

'AliceBob'

Replicarea stringurilor

>>> 'Alice' * 5

'AliceAliceAliceAliceAlice'

Manipularea stringurilor

Caractere speciale(Escape characters)


Caracter Se printeaza ca

\' Glilimea simpla

\" Ghilimea dubla

\t Tab

\n Rand nou
\\ Backslash

Exemplu:

>>> print("Hello there!\nHow are you?\nI\'m doing fine.")

Hello there!

How are you?

I'm doing fine.

Stringuri Raw
Un string raw ignora complet toate caracterele speciale si printeaza orice backslash apare in
string.

>>> print(r'That is Carol\'s cat.')

That is Carol\'s cat.

Nota: Se foloseste indeosebi pentru lucrur cu cai in linux si pentru definirea expressilor regex

Stringuri pe mai multe linii (triple ghilimele)


>>> print('''Dear Alice,

>>>

>>> Eve's cat has been arrested for catnapping, cat burglary, and
extortion.

>>>

>>> Sincerely,

>>> Bob''')

Dear Alice,

Eve's cat has been arrested for catnapping, cat burglary, and
extortion.

Sincerely,
Bob

Indexarea si slicingul sirurilor de caractere


>>> spam = 'Hello world!'

>>> spam[0]

'H'

>>> spam[4]

'o'

>>> spam[-1]

'!'

Slicing:

>>> spam[0:5]

'Hello'

>>> spam[:5]

'Hello'

>>> spam[6:]

'world!'

>>> spam[6:-1]

'world'

>>> spam[:-1]

'Hello world'

>>> spam[::-1]

'!dlrow olleH'

>>> spam = 'Hello world!'

>>> fizz = spam[0:5]

>>> fizz
'Hello'

Operatorii in si not in in lucrul cu stringuri:


>>> 'Hello' in 'Hello World'

True

>>> 'Hello' in 'Hello'

True

>>> 'HELLO' in 'Hello World'

False

>>> '' in 'spam'

True

>>> 'cats' not in 'cats and dogs'

False

upper(), lower(), isupper(), and islower()


upper() si lower():

>>> spam = 'Hello world!'

>>> spam = spam.upper()

>>> spam

'HELLO WORLD!'

>>> spam = spam.lower()

>>> spam

'hello world!'
startswith() si endswith()
>>> 'Hello world!'.startswith('Hello')

True

>>> 'Hello world!'.endswith('world!')

True

>>> 'abc123'.startswith('abcdef')

False

>>> 'abc123'.endswith('12')

False

>>> 'Hello world!'.startswith('Hello world!')

True

>>> 'Hello world!'.endswith('Hello world!')

True

join() si split()
join():

>>> ', '.join(['cats', 'rats', 'bats'])

'cats, rats, bats'

>>> ' '.join(['My', 'name', 'is', 'Simon'])

'My name is Simon'

>>> 'ABC'.join(['My', 'name', 'is', 'Simon'])

'MyABCnameABCisABCSimon'

split():

>>> 'My name is Simon'.split()


['My', 'name', 'is', 'Simon']

>>> 'MyABCnameABCisABCSimon'.split('ABC')

['My', 'name', 'is', 'Simon']

>>> 'My name is Simon'.split('m')

['My na', 'e is Si', 'on']

Eliminarea spatiilor si a terminatorilor de rand cu strip(),


rstrip(), and lstrip()
>>> spam = ' Hello World '

>>> spam.strip()

'Hello World'

>>> spam.lstrip()

'Hello World '

>>> spam.rstrip()

' Hello World'

>>> spam = 'SpamSpamBaconSpamEggsSpamSpam'

>>> spam.strip('ampS')

'BaconSpamEggs'

Formatarea stringurilor
Operatorul %
>>> name = 'Pete'

>>> 'Hello %s' % name

"Hello Pete"

Putem folosi operatorul de format specific %x pentru a converti un int intr-un string:

>>> num = 5
>>> 'I have %x apples' % num

"I have 5 apples"

Nota: Pentru cod nou folosirea metodei str.format sau a f-strings (Python 3.6+) este cu mult
recomandata in pofida folosirii operatorului “%”.

Formatarea stringurilor (str.format)


Python 3 a introdus o noua metoda de formatare a stringurilor care face ca sintaxa pentru
formatarea stringurilor sa fie mult mai consistenta.

>>> name = 'John'

>>> age = 20'

>>> "Hello I'm {}, my age is {}".format(name, age)

"Hello I'm John, my age is 20"

>>> "Hello I'm {0}, my age is {1}".format(name, age)

"Hello I'm John, my age is 20"

Documentatia oficiala Python 3.x recomanda folosirea str.format:

The formatting operations described here exhibit a variety of quirks that lead to a number of
common errors (such as failing to display tuples and dictionaries correctly). Using the newer
formatted string literals or the str.format() interface helps avoid these errors. These alternatives
also provide more powerful, flexible and extensible approaches to formatting text.

F-string literals sau f-strings (Python 3.6+)


>>> name = 'Elizabeth'

>>> f'Hello {name}!'

'Hello Elizabeth!

Este posibil chiar sa facem calcule de aritmetica inline cu metoda aceasta

>>> a = 5

>>> b = 10

>>> f'Five plus ten is {a + b} and not {2 * (a + b)}.'


'Five plus ten is 15 and not 30.'

Variabile
Puteti da orice nume unei variabile atata timp cat urmeaza urmatoarele reguli:

1. Poate fi un singur cuvant.


2. Se pot folosi doar litere, cifre si caracterul “_”.
3. Nu poate incepe cu un numar.
4. Variabilele ale caror nume incep cu “_” sunt considerate nefolositoare.
Exemplu:

>>> spam = 'Hello'

>>> spam

'Hello'

>>> _spam = 'Hello'

_spam nu ar trebui sa mai fie folosit din nou in cod.

Comentarii
# Acesta este un comentariu

Cod + comentariu:

a = 1 # initializare/asignare

Functia print()
>>> print('Hello world!')

Hello world!

>>> a = 1

>>> print('Hello world!', a)

Hello world! 1
Functia Input()
Cod exemplu:

>>> print('What is your name?') # Cereti utilizatorului numele

>>> myName = input()

What is your name?

Al

>>> print('It is good to meet you, {}'.format(myName))

It is good to meet you, Al

Functia len()
Arata lungimea unu string (sau a unui iterabil - eg: liste, tupluri, etc.)

>>> len('hello')

Nota: Pentru a testa daca un string, lista, dictionar etc. este gol/goala se recomanda o evaluare a
valorii de adevar si nu folosirea functiei len().

>>> a = [1, 2, 3]

>>> if a:

>>> print("the list is not empty!")

Functiile str(), int() si float()


Integer in String sau Float:

>>> str(29)

'29'

>>> print('I am {} years old.'.format(str(29)))

I am 29 years old.

>>> str(-3.14)
'-3.14'

Float to Integer:

>>> int(7.7)

>>> int(7.7) + 1

Flow Control
Operatori de comparare
Operator Functionalitate

== egal cu

!= nu e egal cu

< mai mic decat

> mai mare decat

<= mai mic sau egal ca

>= mai mare sau egal ca

Operatiile cu acesti operatori returneaza True sau False in functie de valorile pe care le dam
membrilor operatiei.
Exemple pentru operatorii de comparatie:

>>> 42 == 42

True

>>> 40 == 42

False

>>> 'hello' == 'hello'

True

>>> 'hello' == 'Hello'

False

>>> 'dog' != 'cat'

True

>>> 42 == 42.0

True

>>> 42 == '42'

False

Evaluarea
Nu se recomanda folosirea operatorilor == sau != pentru evaluarea unei operații booleene.
Folositi operatorii is sau is not, sau, cel mai facil evaluarea implicita.

>>> True is True

True

>>> True is not False


True

Cele 3 exemple de mai jos sunt echivalente intre ele:

>>> if a is True:

>>> pass

>>> if a is not False:

>>> pass

>>> if a: #Cea mai recomandata dintre abordari

>>> pass

Si acestea:

>>> if a is False:

>>> pass

>>> if a is not True:

>>> pass

>>> if not a:

>>> pass

Operatori Booleeni
Exista 3 operatori booleeni: and, or, and not.

Tabela de adevar a operatorului “and”:

Expresie/Operatie Rezultat

True and True True

True and False False

False and True False


False and False False

Tabela de adevar a operatorului “or”:

Expresie/Operatie Rezultat

True or True True

True or False True

False or True True

False or False False

Tabela de adevar a operatorului “not”:

Expresie/Operatie Rezultat

not True False

not False True

Comparatii si operatori booleeni


>>> (4 < 5) and (5 < 6)

True

>>> (4 < 5) and (9 < 6)

False

>>> (1 == 2) or (2 == 2)

True

>>> 2 + 2 == 4 and not 2 + 2 == 5 and 2 * 2 == 2 + 2


True

Statement-ul if:
if name == 'Alice':

print('Hi, Alice.')

Statementul else:
name = 'Bob'

if name == 'Alice':

print('Hi, Alice.')

else:

print('Hello, stranger.')

Statementul elif:
name = 'Bob'

age = 5

if name == 'Alice':

print('Hi, Alice.')

elif age < 12:

print('You are not Alice, kiddo.')

name = 'Bob'

age = 30

if name == 'Alice':

print('Hi, Alice.')

elif age < 12:

print('You are not Alice, kiddo.')


else:

print('You are neither Alice nor a little kid.')

Bucle while:
spam = 0

while spam < 5:

print('Hello, world.')

spam = spam + 1

Statement-ul break
Daca in executia unei bucle (simple sau imbricate – while cuprins intr-alt while) se intalneste
cuvantul cheie break se iese imediat din bucla in care s-a intalnit statement-ul break:

while True:

print('Please type your name.')

name = input()

if name == 'your name':

break

print('Thank you!')

Statement-ul continue
Cand se intalneste cuvantul cheie continue intr-o bucla, se sare imediat la inceputul buclei.
Celelalte instructiuni din bucla nu mai sunt executate

while True:
print('Who are you?')
name = input()
if name != 'Joe':
continue

print('Hello, Joe. What is the password? (It is a fish.)')


password = input()
if password == 'swordfish':
break

print('Access granted.')
Bucle for si functia range():

>>> print('My name is')

>>> for i in range(5):

>>> print('Jimmy Five Times ({})'.format(str(i)))

My name is

Jimmy Five Times (0)

Jimmy Five Times (1)

Jimmy Five Times (2)

Jimmy Five Times (3)

Jimmy Five Times (4)

Functia range() poate fi folosita cu 3 argumente. Primele 2 sunt valorile de start si stop si a 3-a
este valoarea pasului. Pasul reprezinta valoarea cu care variabila este incrementata in fiecare
iteratie.

>>> for i in range(0, 10, 2):

>>> print(i)

8
Se pot folosi si numere negative pentru a face ca bulca for sa mearga inapoi

>>> for i in range(5, -1, -1):

>>> print(i)

Importarea modulelor
import getpass

user = input(‘Insert username: ’)

password = getpass.getpass(‘Insert password: ’)

Liste
>>> spam = ['cat', 'bat', 'rat', 'elephant']

>>> spam

['cat', 'bat', 'rat', 'elephant']


Extragerea unei singure valori dintr-o lista folosind indecsi
>>> spam = ['cat', 'bat', 'rat', 'elephant']

>>> spam[0]

'cat'

>>> spam[1]

'bat'

>>> spam[2]

'rat'

>>> spam[3]

'elephant'

Indecsi Negativi
>>> spam = ['cat', 'bat', 'rat', 'elephant']

>>> spam[-1]

'elephant'

>>> spam[-3]

'bat'

>>> 'The {} is afraid of the {}.'.format(spam[-1], spam[-3])

'The elephant is afraid of the bat.'

Extragerea unei subliste folosind slicing


>>> spam = ['cat', 'bat', 'rat', 'elephant']

>>> spam[0:4]

['cat', 'bat', 'rat', 'elephant']


>>> spam[1:3]

['bat', 'rat']

>>> spam[0:-1]

['cat', 'bat', 'rat']

>>> spam = ['cat', 'bat', 'rat', 'elephant']

>>> spam[:2]

['cat', 'bat']

>>> spam[1:]

['bat', 'rat', 'elephant']

Daca folosim operatia de slicing pentru extragerea tuturor elementelor dintr-o lista se creeaza o
copie.

>>> spam2 = spam[:]

['cat', 'bat', 'rat', 'elephant']

>>> spam.append('dog')

>>> spam

['cat', 'bat', 'rat', 'elephant', 'dog']

>>> spam2

['cat', 'bat', 'rat', 'elephant']

Obtinerea lungimii unei liste cu functia len()


>>> spam = ['cat', 'dog', 'moose']

>>> len(spam)

Modificarea in place a unui element din lista folosind indecsi


>>> spam = ['cat', 'bat', 'rat', 'elephant']

>>> spam[1] = 'aardvark'


>>> spam

['cat', 'aardvark', 'rat', 'elephant']

>>> spam[2] = spam[1]

>>> spam

['cat', 'aardvark', 'aardvark', 'elephant']

>>> spam[-1] = 12345

>>> spam

['cat', 'aardvark', 'aardvark', 12345]

Concatenarea si replicarea listelor


>>> [1, 2, 3] + ['A', 'B', 'C']

[1, 2, 3, 'A', 'B', 'C']

>>> ['X', 'Y', 'Z'] * 3

['X', 'Y', 'Z', 'X', 'Y', 'Z', 'X', 'Y', 'Z']

>>> spam = [1, 2, 3]

>>> spam = spam + ['A', 'B', 'C']

>>> spam
[1, 2, 3, 'A', 'B', 'C']

Folosirea buclelor for pentru parcurgerea listelor


>>> supplies = ['pens', 'staplers', 'flame-throwers', 'binders']

>>> for supply in supplies:

>>> print(supply)

pens

staplers

flame-throwers

binders

Operatorii in si not in:


>>> 'howdy' in ['hello', 'hi', 'howdy', 'heyas']

True

>>> spam = ['hello', 'hi', 'howdy', 'heyas']

>>> 'cat' in spam

False

>>> 'howdy' not in spam

False

>>> 'cat' not in spam

True

Assignarea multipla
Daca stim exact cate elemente sunt intr-o lista exista o scurtatura pentru a assigna valorile din
acea lista unor variabile. In loc sa facem ceva de genul urmator:

>>> cat = ['fat', 'orange', 'loud']


>>> size = cat[0]

>>> color = cat[1]

>>> disposition = cat[2]

Putem face ceva de genul acesta:

>>> cat = ['fat', 'orange', 'loud']

>>> size, color, disposition = cat

Acelasi truc se poate folosi si pentru a inversa valorile a 2 variabile intre ele:

>>> a, b = 'Alice', 'Bob'

>>> a, b = b, a

>>> print(a)

'Bob'

>>> print(b)

'Alice'

Operatori augmentati de assignare


Operator Echivalent

spam += 1 spam = spam + 1

spam -= 1 spam = spam - 1

spam *= 1 spam = spam * 1

spam /= 1 spam = spam / 1

spam %= 1 spam = spam % 1

Exemple:
>>> spam = 'Hello'

>>> spam += ' world!'

>>> spam

'Hello world!'

>>> bacon = ['Zophie']

>>> bacon *= 3

>>> bacon

['Zophie', 'Zophie', 'Zophie']

Gasirea unei valori intr-o lista cu metoda index


>>> spam = ['Zophie', 'Pooka', 'Fat-tail', 'Pooka']

>>> spam.index('Pooka')

Adaugarea unei valori intr-o lista cu metodele append() si


insert()
append(): #Adauga o valoare la sfarsitul listei

>>> spam = ['cat', 'dog', 'bat']

>>> spam.append('moose')

>>> spam

['cat', 'dog', 'bat', 'moose']

insert(): #Adauga o valoare la pozitia pe care o dam ca argument: insert(pozitie, valoare)

>>> spam = ['cat', 'dog', 'bat']

>>> spam.insert(1, 'chicken')

>>> spam

['cat', 'chicken', 'dog', 'bat']


Eliminarea unei valori dintr-o lista cu functiile remove() si
pop()
>>> spam = ['cat', 'bat', 'rat', 'elephant']

>>> spam.remove('bat')

>>> spam

['cat', 'rat', 'elephant']

>>> spam.pop(1)

>>> spam

['cat', 'elephant']

Daca o valoare apare de mai multe ori in lista, doar prima ei aparitie va fi eliminate folosind
functia remove()

Sorting the Values in a List with the sort() Method


>>> spam = [2, 5, 3.14, 1, -7]

>>> spam.sort()

>>> spam

[-7, 1, 2, 3.14, 5]

>>> spam = ['ants', 'cats', 'dogs', 'badgers', 'elephants']

>>> spam.sort()

>>> spam

['ants', 'badgers', 'cats', 'dogs', 'elephants']

Functia sort are si argumentul optional reverse (cu valoarea default=False), caruia putem sa ii
dam valoarea true pentru a avea o lista ordonata descrescator:

>>> spam.sort(reverse=True)

>>> spam
['elephants', 'dogs', 'cats', 'badgers', 'ants']

Tipul de date - Tuple


>>> eggs = ('hello', 42, 0.5)

>>> eggs[0]

'hello'

>>> eggs[1:3]

(42, 0.5)

>>> len(eggs)

Principalul mod in care tuplurile si listele difera este ca tuplurile sunt imutabile.

Modificarea tipului de date din tuple in list si viceversa.


>>> tuple(['cat', 'dog', 5])

('cat', 'dog', 5)

>>> list(('cat', 'dog', 5))

['cat', 'dog', 5]

>>> list('hello')

['h', 'e', 'l', 'l', 'o']

Seturi
Din documentatia oficiala Python 3:

A set is an unordered collection with no duplicate elements. Basic uses include membership
testing and eliminating duplicate entries. Set objects also support mathematical operations like
union, intersection, difference, and symmetric difference.

Initializarea unui set


Exista 2 metode pentru initializarea unui set: folosind acoladele {} functia standard
python set()
>>> s = {1, 2, 3}

>>> s = set([1, 2, 3])

Cand se doreste crearea unui set gol nu folositi {} ci folositi functia set(). S = {} va returna un
dictionar gol.

>>> s = {}

>>> type(s)

<class 'dict'>

Seturile: colectii neordonate de valori unice:


Un set elimina automat toate aparitiile duplicate ale unei valori.

>>> s = {1, 2, 3, 2, 3, 4}

>>> s

{1, 2, 3, 4}

Fiind un tip de date neordonat nu poate fi indexat.

>>> s = {1, 2, 3}

>>> s[0]

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

TypeError: 'set' object does not support indexing

>>>

Functiile add() si update()


Folosind functia add() putem sa adaugam un singur element setului.

>>> s = {1, 2, 3}

>>> s.add(4)

>>> s

{1, 2, 3, 4}
Si cu update(), mai multe.

>>> s = {1, 2, 3}

>>> s.update([2, 3, 4, 5, 6])

>>> s

{1, 2, 3, 4, 5, 6} # Observam cum seturile elimina automat


aparitiile multiple ale unui element.

set remove() si discard()


Ambele functii elimina un element din set dar remove() o sa ridice o exceptie (key
error) daca valoarea nu exista.

>>> s = {1, 2, 3}

>>> s.remove(3)

>>> s

{1, 2}

>>> s.remove(3)

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

KeyError: 3

discard() nu ridica nici o exceptie.

>>> s = {1, 2, 3}

>>> s.discard(3)

>>> s

{1, 2}

>>> s.discard(3)

>>>

set union()
union() sau | o sa creeze un nou set cu toate elementele din cele 2 seturi.
>>> s1 = {1, 2, 3}

>>> s2 = {3, 4, 5}

>>> s1.union(s2) # sau 's1 | s2'

{1, 2, 3, 4, 5}

set intersection()
intersection sau & o sa returneze un nou set care contine doar eementele commune celor 2
seturi.

>>> s1 = {1, 2, 3}

>>> s2 = {2, 3, 4}

>>> s1.intersection(s2) # sau 's1 & s2

{3}

set difference()
difference sau – o sa returneze doar elementele care sunt intr-un singur set.

>>> s1 = {1, 2, 3}

>>> s2 = {2, 3, 4}

>>> s1.difference(s2) # sau 's1 - s2'

{1}

You might also like