Sunteți pe pagina 1din 25

Laborator – Software pentru Aparatura Medicala- Ioana Dogaru

Laborator – Software pentru Aparatura Medicala


Limbajul Python - Notiuni introductive

Limbajul de programare Python este un limbaj de programare obiect-orientat, comparabil cu alte


limbaje de programare cum ar fi Perl, Ruby sau Java. Este un limbaj interpretat, de nivel înalt și de uz
general, creat de către Guido van Rossum în 1991.

Unele dintre caracteristicile notabile ale lui Python:

Folosește o sintaxă elegantă, ușor de înțeles. Este un limbaj ușor de folosit. Acest lucru face ca
Python să fie ideal pentru dezvoltarea prototipului software. Vine cu o bibliotecă standard, cu suport
general de programare, cum ar fi conectarea la servere web, căutarea de texte cu expresii regulate, citirea
și modificarea fișierelor, etc.
Modul interactiv al lui Python facilitează testarea fragmentelor scurte de cod. Există, de
asemenea, un mediu de dezvoltare asociat numit IDLE.
Este ușor de extins prin adăugarea de module noi implementate în limbaje de programare
compilate, cum ar fi C sau C ++.
Rulează pe orice sistem de operare, inclusiv Mac OS X, Windows, Linux și Unix, cu platforme
disponibile și pentru Android și iOS.

Se pot utiliza și alte medii integrate de dezvoltare cum ar fi: distributia Anaconda, PyCharm, etc.

Cateva dintre trăsăturile de limbaj:

- Prezinta o varietate de tipuri de date de baza: numere (format virgulă mobilă, numere complexe,
intreg), striguri (ASCII si Unicode), liste si dicționare.
- Suporta programarea obiect-orientată cu clase și moșteniri multiple
- Codul poate fi grupat în module și pachete
- Gestioneaza memoria in mod automat

Lista de cuvinte cheie din limbaj:


Laborator – Software pentru Aparatura Medicala- Ioana Dogaru

Important:
In Python nu se utilizeaza acoladele {} pentru a delimita blocuri de program (functii, bucle for, while, if,
etc) Se utilizeaza indentarea.

im_a_parent:
im_a_child:
im_a_grand_child
im_another_child:
im_another_grand_child

Notiuni, exemple si mod de programare:


Pentru a realiza programe utilizand limbajul de programare Python, se pot utiliza diferite moduri de
lucru, in modul interactiv (comenzi directe), prin executia unui script sau prin intermediul unui mediu
integrat de dezvoltare.

În acest laborator vom utiliza distribuția Anaconda după cum urmeaza:

Mediul interactiv:
Se pornește Anacoda prompt: si se introduce comanda python din linia de comanda (dupa cum se
observa in figura de mai jos)

Promptul >>> identifică mediul interactiv python in care se poate lucra direct si se pot introduce
direct comenzi.

Primul lucru pe care il putem remarca este că putem să realizam direct calcule de la acest prompt.

De exemplu, ridicarea la pătrat: (valoarea 3 si operatorul ** si puterea 2)


Dupa introducerea comenzii dorite, la final se da enter se afiseaza rezultatul calculului, si anume
valoarea 9.
Laborator – Software pentru Aparatura Medicala- Ioana Dogaru

Operatorii aritmetici din Python:

Operator Meaning Example

x+y
+ Add two operands or unary plus
+2

x-y
- Subtract right operand from the left or unary minus
-2

* Multiply two operands x*y

/ Divide left operand by the right one (always results into float) x/y

% Modulus - remainder of the division of left operand by the right x % y (remainder of x/y)

Floor division - division that results into whole number adjusted to the
// x // y
left in the number line

** Exponent - left operand raised to the power of right x**y (x to the power y)

Exercitiu:

Introduceti urmatoarele exemple de calcul de la promptul python >>> si observati rezultatele obtinute:

17 / 3 # classic division returns a float


17 // 3 # floor division discards the fractional part
17 % 3 # the % operator returns the remainder of the division
5 * 3 + 2 # result * divisor + remainder

In modul interactiv, ultima valoare calculata este atribuita unei variabile implicite _

Exercitiu:

Introduceti urmatoarele exemple de calcul de la promptul python >>> si observati rezultatele obtinute:

>>> tax = 12.5 / 100


>>> price = 100.50
>>> price * tax
12.5625
>>> price + _
113.0625
>>> round(_, 2)
113.06
Laborator – Software pentru Aparatura Medicala- Ioana Dogaru

Pe langa int si float, mai exista Decimal si Fraction. De asemenea, exista suport pentru numere
complexe.

Tot in modul interactiv se pot introduce rapid instructiuni si se pot executa imediat. Pentru programe
(scripturi) realizate in limbajul Python, cel mai eficient este sa introducem codul in fisiere cu extensia
*.py si sa executam aceste scripturi.

Exemplu:

Revenim la promptul de sistem dupa cum urmeaza: (calea este particulara pentru sistemul pe care este
instalat mediul de programare)

In directorul C:/Studenti/Spam se creaza de exemplu un fisier cu numele test.py. (De exemplu se va


utiliza editorul de texte Notepad).

Liniile de cod introduse: (se remarca introducerea de comentarii cu simbolul # - aceste linii nu vor fi
interpretate la executia scriptului) se salveaza in fisierul cu extensia .py care identifica limbajul de
programare utilizat.

print(2 ** 10) # 2 la puterea 10


x = 'Spam!'
print(x * 8) # repetitia sirului

Scriptul va fi executat din linia de comanda dupa cum urmeaza:

De la prompul sistemului se introduce comanda:

(base) C:\Users\radu>python c:\Studenti\Spam\test.py

Observatii>
Prima instructiune print(2 ** 10)  afiseaza valoarea 1024
Cea de a doua instructiune introduce o variabila cu numele x si initializata cu valoarea Spam!
Intructiunea print(x*8) va afisa de 8 ori sirul.

Daca se utilizeaza un mediu grafic si integrat de programare (De exemplu Spyder), vom obtine utilizand
acelasi fisier urmatorul rezultat:
Laborator – Software pentru Aparatura Medicala- Ioana Dogaru

Exemple cu siruri de caractere:


Pentru a introduce un sir de caractere, se pot utiliza atat ghilimele duble cat si simple. Sirurile pot fi
indexate, incepand cu indexul 0.

Exercitii – sa se testeze din mediul interactiv >>> Python si sa se urmareasca rezultatele obtinute:

Pentru aceasta revenim la fereastra:

Introducem comenzile si observam efectele obtinute: (la >>> se introduce comanda, se da enter si se
obtine rezultatul comenzii).

>>> word = 'Python'


>>> word[0] # character in position 0
'P'
>>> word[5] # character in position 5
'n'

Sirul este indexat dupa cum se observa indecsi pozitivi si negativi:


| P | y | t | h | o | n |
+---+---+---+---+---+---+
0 1 2 3 4 5 6
-6 -5 -4 -3 -2 -1

>>> word[-1] # last character


'n'
Laborator – Software pentru Aparatura Medicala- Ioana Dogaru
>>> word[-2] # second-last character
'o'
>>> word[-6]
'P'

>>> word[0:2] # characters from position 0 (included) to 2


(excluded)
'Py'
>>> word[2:5] # characters from position 2 (included) to 5
(excluded)
'tho'

>>> word[:2] + word[2:]


'Python'
>>> word[:4] + word[4:]
'Python'

Functia len() – returneaza lungimea unui sir:

>>> len(word)
6
>>>

Liste
Python prezinta tipuri de date compuse, utilizate pentru a grupa alte tipuri de date. Una dintre cele mai
versatile, este list. Se poate introduce intr-o lista de valori separate prin virgula intre paranteze patrate.
Listele pot contine diferite tipuri, dar uzual au acelasi tip de date.

Exercitii: Introduceti in mediul interactiv python >>>

>>> squares = [1, 4, 9, 16, 25]


>>> squares
[1, 4, 9, 16, 25]

Listele se pot indexa si trunchia.

>>> squares[0] # indexing returns the item


1
>>> squares[-1]
25
>>> squares[-3:] # slicing returns a new list
Laborator – Software pentru Aparatura Medicala- Ioana Dogaru
[9, 16, 25]

Toate operatiile de trunchiere returneaza o noua lista care contine elementele dorite.
>>> squares[:]
[1, 4, 9, 16, 25]

Listele suporta de asemenea operatii precum concatenarea:

>>> squares + [36, 49, 64, 81, 100]


[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

Fata de stringuri care nu pot fi modificate (immutable), listele pot fi modificate (mutable), adica se poate
modifica continutul:
>>> cubes = [1, 8, 27, 65, 125] # something's wrong here
>>> 4 ** 3 # the cube of 4 is 64, not 65!
64
>>> cubes[3] = 64 # replace the wrong value
>>> cubes
[1, 8, 27, 64, 125]

De asemenea, se pot adauga noi componente la finalul listei, utilizand metoda append().

>>> cubes.append(216) # add the cube of 6


>>> cubes.append(7 ** 3) # and the cube of 7
>>> cubes
[1, 8, 27, 64, 125, 216, 343]

Se poate sterge o lista in intregime

>>> letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g']


>>> letters
['a', 'b', 'c', 'd', 'e', 'f', 'g']
>>> # replace some values
>>> letters[2:5] = ['C', 'D', 'E']
>>> letters
['a', 'b', 'C', 'D', 'E', 'f', 'g']
>>> # now remove them
>>> letters[2:5] = []
>>> letters
['a', 'b', 'f', 'g']
>>> # clear the list by replacing all the elements with an empty list
Laborator – Software pentru Aparatura Medicala- Ioana Dogaru
>>> letters[:] = []
>>> letters
[]

Se poate utiliza len() si pentru liste:

>>> letters = ['a', 'b', 'c', 'd']


>>> len(letters)
4Se pot crea liste incuibarite (liste care contin alte liste)
>>> a = ['a', 'b', 'c']
>>> n = [1, 2, 3]
>>> x = [a, n]
>>> x
[['a', 'b', 'c'], [1, 2, 3]]
>>> x[0]
['a', 'b', 'c']
>>> x[0][1]
'b'

Functia print()

>>> i = 256*256
>>> print('The value of i is', i)
The value of i is 65536

Exercitii:

1) Sa se calculeze si sa se afiseze intr-un script Python suma a doua numere.

Rezolvare:

Cazul in care cele doua numere sunt de tip intreg:

Codul sursa care se salveaza in fisier (de exemplu cu numele test.py) este dupa cum urmeaza:

a = 2
b = 3
sum = a + b
print(sum)

Se observa ca nu este necesar sa punem ; dupa fiecare instructiune ca in alte limbaje de programare,
dar nici nu va fi semnalizata ca eroare daca punem simbolul de terminare a instructiunii.
Laborator – Software pentru Aparatura Medicala- Ioana Dogaru
 Din linia de comanda: python si numele fisierului (inclusiv calea)

Raspunsul este afisat  cu functia print()

Adaugam un text la functia print()  de exemplu, suma a doua numere este:

Codul sursa devine: (se modifica si se salveaza scriptul)

a = 2;
b = 3;
sum = a + b;
print("Suma a doua numere este:" , sum);

 Se executa din nou si se obtine noul rezultat:

Daca avem o eroare in script, va fi semnalizata ca eroare la interpretarea codului.


De exemplu, stergem virgula in functia print().

La executie, apare eroarea si este indicata linia unde a fost semnalizata:

Daca se utilizeaza un mediu integrat de dezvoltare (de exemplu Spyder) – eroarea este subliniata chiar
din faza de introducere a codului:

Daca se doreste ca numerele sa fie preluate de la tastatura:  se utilizeaza input()

Se modifica codul dupa cum urmeaza:

#a = 2;
a = input('Introduceti primul numar: ')
#b = 3;
b = input('Introduceti al doilea numar: ')
Laborator – Software pentru Aparatura Medicala- Ioana Dogaru
sum = int(a) + int(b);
print("Suma a doua numere este:" , sum);

Observatii:

Cu functia input() se introduc date de la tastatura – acestea au insa formatul de string. Daca nu se
utilizeaza conversia (int) pentru a si b  rezultatul va fi 23 (adica concatenare!)

Daca se utilizeaza conversia  suma va fi 5 pentru a = 2 si respectiv b = 3 (de la tastatura).

In continuare, consideram cazul in care dorim numere reale (inclusiv formatarea la afisare):

a = input('Introduceti primul numar: ')


b = input('Introduceti al doilea numar: ')
# Suma celor doua numere - conversie la float
sum = float(a) + float(b)
# Afisare pentru suma
print('suma pentru {0} si {1} este {2}'.format(a, b, sum))

La executia scriptului:

Observatii:
Alte exemple pentru format()

new_open_string = "Sammy loves {} {}." #2 {} placeholders


print(new_open_string.format("open-source", "software")) #Pass 2 strings
into method, separated by a comma
Output
Sammy loves open-source software.

Exercitiul 2)
Sa se calculeze si sa se afiseze aria unui cerc de raza introdusa de la tastatura (de tip float)

Codul sursa:

import math
raza = float(input('Introduceti raza cercului: '))
aria = float(math.pi *raza**2)
print("Aria cercului de raza {} este {} " .format(raza, aria))

Observatii:
 Se importa modulul math pentru pi.
Laborator – Software pentru Aparatura Medicala- Ioana Dogaru
 Codul este echivalent cu:

from math import pi


raza = float(input('Introduceti raza cercului: '))
aria = float(pi *raza**2)
print("Aria cercului de raza {} este {} " .format(raza, aria))

Exercitiul 3) Sa se calculeze si sa se afiseze radacina patrata a unui numar – cu formatare

Rezolvare:

# Python Program to calculate the square root


# Nota: se poate modifica numarul
num = 8
# numarul se poate lua de la tastatura – se scoate comentariul
#num = float(input('Introduceti un numar: '))
num_sqrt = num ** 0.5
print('Radacina patrata pentru %0.3f este %0.3f'%(num ,num_sqrt))

Structuri de control
Instructiunea if
forma generala:
Laborator – Software pentru Aparatura Medicala- Ioana Dogaru

Exercitiu:

Executati urmatorul script  acesta genereaza un numar random in intervalul 10, 49.
Cu ajutorul if se verifica daca numarul generat este mai mare/mai mic decat 20, daca este impar,
etc.

import random
# generare numar intreg in intervalul 10 to 49.
i = random.randrange(10,50)
print('Numarul generat aleatoriu este', i)
# Analiza a proprietatilor numarului generat.
if i < 20:
print("Este mai mic decat 20.")
if i % 3 == 0:
print("Este divizibil cu 3.")
elif i == 20:
print("Este exact 20! .")
else:
if i % 2 == 1:
print("Este un numar impar.")
else:
print("Este dublul numarului", i / 2, '.')
print("Este mai mare decat 20!")

Observatii:
Importul pachetului random – pentru generare de numere random.
De asemenea se va observa aranjarea codului (indentarea) in instructiunea if Executati scriptul de mai
multe ori la rand pentru a genera diferite numere in intervalul 10:49. Se vor verifica conditiile pentru
fiecare numar generat si se vor afisa mesajele corespunzatoare.

Bucla while

Forma generala:

Exercitiu: sa se execute scriptul de mai jos: sa se observe utilizarea instructiunii while

# Simple while loop


a = 0
while a < 15:
print(a, end=' ')
if a == 10:
print("made it to ten!!")
a = a + 1
print()
Laborator – Software pentru Aparatura Medicala- Ioana Dogaru

Instructiunea for
Forma generala:

Exercitiu: : sa se execute scriptul de mai jos  sa se observe utilizarea instructiunii for:

# Bucla for – parcurge o lista


for x in ['Bill', 'Alice', 'Joe', 'Sue' ]:
print(x, 'invata programare.')
# range  genereaza o lista de numere in intervalul #indicat.
print(range(5, 10))
# for loop.
for y in range(2, 10):
print(y,end=' ')
print()
for y in range(2, 10, 2):
print(y,end=' ')
print()
for y in range(20, 10, -1):
print(y,end=' ')
print()

Exercitiu: : sa se execute scriptul de mai jos  sa se observe utilizarea instructiunii for:

power = 1
for y in range(0,21):
print("2 to the", y, "is", power)
power = 2 * power

# Scanning a list.
fred = ['And', 'now', 'for', 'something', 'completely', 'different.']
;
for i in range(0,len(fred)):
print(i, fred[i])

Instructiunea break
Este utilizata pentru a putea iesi dintr-o bucla cand se regaseste o anumita condirtie. (de regula dupa o
instructiune if). Este la fel ca si in limbajul C.

Exercitiu: : sa se execute scriptul de mai jos  sa se observe utilizarea instructiunii break;

number = 0
for number in range(10):
number = number + 1
if number == 5:
break # break here
Laborator – Software pentru Aparatura Medicala- Ioana Dogaru
print('Number is ' + str(number))
print('Out of loop')

La executia codului se obtine rezultatul:

Number is 1
Number is 2
Number is 3
Number is 4
Out of loop

Observatii: Cand se atinge conditia number == 5, nu se mai executa afisarea pentru aceasta valoare si
se iese din bucla, fara a mai parcurge bucla for pana la 10.

Instructiunea continue
Se utilizeaza cand se doreste sa fie sarita o parte dintr-o bucla, dar se doreste sa fie completate toate
iteratiile din bucla. Este la fel ca in C/C++;

Exercitiu: : sa se execute scriptul de mai jos  sa se observe utilizarea instructiunii continue

number = 0
for number in range(10):
number = number + 1
if number == 5:
continue # continue here
print('Number is ' + str(number))
print('Out of loop')

La executia codului se obtine rezultatul:

Number is 1
Number is 2
Number is 3
Number is 4
Number is 6
Number is 7
Number is 8
Number is 9
Number is 10
Out of loop

Observatii: Cand se atinge conditia number == 5, nu se mai executa afisarea pentru aceasta valoare si
se continua bucla for pana la 10.

Instructiunea pass
Când se indeplineste o condiție externă, instrucțiunea pass  permite ocuparea de condiție fără ca
buclele să fie afectate;
Laborator – Software pentru Aparatura Medicala- Ioana Dogaru

Exercitiu: : sa se execute scriptul de mai jos  sa se observe utilizarea instructiunii pass

number = 0
for number in range(10):
number = number + 1
if number == 5:
pass # pass here
print('Number is ' + str(number))
print('Out of loop')

La executia codului se obtine rezultatul:

Number is 1
Number is 2
Number is 3
Number is 4
Number is 5
Number is 6
Number is 7
Number is 8
Number is 9
Number is 10
Out of loop

Definirea si utilizarea functiilor

O functie  reprezinta un bloc de instructiuni care realizeaza o actiune necesara in program. O functie
poate fi reutilizata.
In Python (ca si in C/C++) exista functii predefinite.
 print()
 int() care converteste un string in intreg
 len() care returneaza lungimea unui obiect;

Functiile au nevoie de un nume, paranteze si pot avea argumente.

Exercitiu: : sa se execute scriptul de mai jos  sa se observe definirea si utilizarea functiilor.


Se poate utiliza mediul Spyder, sau se poate realiza un fisier script (cu numele de exemplu hello.py)
si se executa de la consola cu comanda python hello.py

#definire functie - numele hello


def hello():
print("Hello, World!") #corpul functiei
hello() #apelul functiei

Observatii: Pentru definirea unei functii se utilizeaza cuvantul cheie def. Numele functiei in acest caz
este hello(): si urmeaza corpul functiei. Atentie la spatierea codului.

Rezultatul la iesire:

Hello, World!
Laborator – Software pentru Aparatura Medicala- Ioana Dogaru

Sa se scrie un program in care se verifica daca intr-un string exista o vocala

Rezolvare:
Pentru a rezolva problema, se poate utiliza o functie in care se verifica daca intr-un string introdus de la
tastatura este o vocala.
Exercitiu: : sa se execute scriptul de mai jos 

# Definire functie names()


def names():
# introducere variabila de la tastatura
name = str(input('Enter your name: '))
# verificare daca name are v0cale
if set('aeiou').intersection(name.lower()):
print('Your name contains a vowel.')
else:
print('Your name does not contain a vowel.')
# iteratii in name
for letter in name:
print(letter)
# apel functie names()
names()

Enter your name: irina


Your name contains a vowel.
i
r
i
n
a

Enter your name: rtgfh


Your name does not contain a vowel.
r
t
g
f
h

Functii cu argumente

Sa se scrie un program in care se va utiliza o functie care primeste 3 argumente x,y si z. Suma
acestora in diferite moduri va fi afisata de catre functie. Se va apela functia.
Laborator – Software pentru Aparatura Medicala- Ioana Dogaru

Exercitiu: : sa se execute scriptul de mai jos 

Rezolvare:

#definire functie cu 3 argumente


def add_numbers(x, y, z):
a = x + y
b = x + z
c = y + z
print(a, b, c)
#apelare functie cu 3 valori
add_numbers(1, 2, 3)

La iesire se obtine:
345

Observatii: Se transmite 1 parametrului x, 2 parametrului y si respectiv 5 pentru z. (in ordinea in care se


regasesc in argumentele functiei).
In functie se calculeaza a, b si c cu valorile x,y si z. Avand valorile particulare 1,2,3, se obtine:
a=1+23
b=1+34
c=2+35
Cu ajutorul functiei print() se afiseaza cele 3 valori calculate (a,b,c)

Functii care returneaza valori


Se poate ca o functie sa returneze o valoare obtinuta in urma unor calcule. Se utilizeaza return.

Sa se scrie un program care calculeaza patratul unui numar. Se va crea o functie care primeste
valorea ca argument si returneaza patratul acesteia. Valoarea va fi afisata

Rezolvare: sa se execute scriptul de mai jos 

def square(x):
y = x ** 2
return y
result = square(3)
print(result)

La iesire va fi afisat:
9

Observatii: Faptul ca square returneaza valoarea y (rezultata in urma calculului), se poate utiliza intr-o
expresie  result = square(3), result va avea valoarea 9 (valoarea 3 la patrat)

Exercitiu: Sa se generalizeze programul asttfel incat numarul pentru care se doreste a se calcula
patratul, sa fie preluat de la tastatura. Valoarea va fi transmisa ca si argument in functia square.

Utilizarea *args
Se poate utiliza un argument generic, fara a mai introduce un numar specific de argumente.
Laborator – Software pentru Aparatura Medicala- Ioana Dogaru
Exercitiu: : sa se execute scriptul de mai jos  sa se urmareasca modul de lucru pentru *args

def multiply(*args):
z = 1
for num in args:
z *= num
print(z)
multiply(4, 5)
multiply(10, 9)
multiply(2, 3, 4)
multiply(3, 5, 10, 6)

La iesire:

20
90
24
900

Observatii: La definirea functie multiply nu se introduce un numar prestabilit de argumente. Variabila z


va fi produsul numerelor introduse in lista de argumente a functiei. La aplelul functiei, se poate observa
ca se poate introduce un numar variabil de argumente.

Operatori de comparare in Python

Comparision operators in Python

Operator Meaning Example

> Greater that - True if left operand is greater than the right x>y

< Less that - True if left operand is less than the right x<y

== Equal to - True if both operands are equal x == y

!= Not equal to - True if operands are not equal x != y

Greater than or equal to - True if left operand is greater than or


>= x >= y
equal to the right

Less than or equal to - True if left operand is less than or equal to


<= x <= y
the right

Exercitiu: Sa se execute scriptul de mai jos si sa se urmareasca rezultatul (operatorii de


comparare)

x = 10
y = 12
# Output: x > y is False
print('x > y is',x>y)
# Output: x < y is True
Laborator – Software pentru Aparatura Medicala- Ioana Dogaru
print('x < y is',x<y)
# Output: x == y is False
print('x == y is',x==y)
# Output: x != y is True
print('x != y is',x!=y)
# Output: x >= y is False
print('x >= y is',x>=y)
# Output: x <= y is True
print('x <= y is',x<=y)

Operatori logici:

Logical operators in Python

Operator Meaning Example

and True if both the operands are true x and y

or True if either of the operands is true x or y

not True if operand is false (complements the operand) not x

Exercitiu: Sa se execute scriptul de mai jos si sa se urmareasca rezultatul (operatorii logici)

x = True
y = False
# Output: x and y is False
print('x and y is',x and y)
# Output: x or y is True
print('x or y is',x or y)
# Output: not x is False
print('not x is',not x)

Operatori la nivel de biti

Operatorii la nivel de bit se utilizeaza pentru valori reprezentate in binar si opereaza bit cu bit.

De exemplu: 2 este 10 in binar, 7 este 111.

Consideram x = 10 (0000 1010 in binar) si y = 4 (0000 0100 in binar)

Bitwise operators in Python

Operator Meaning Example

& Bitwise AND x& y = 0 (0000 0000)


Laborator – Software pentru Aparatura Medicala- Ioana Dogaru
| Bitwise OR x | y = 14 (0000 1110)

~ Bitwise NOT ~x = -11 (1111 0101)

^ Bitwise XOR x ^ y = 14 (0000 1110)

>> Bitwise right shift x>> 2 = 2 (0000 0010)

<< Bitwise left shift x<< 2 = 40 (0010 1000)

Operatori de asignare

Se utilizeaza pentru a atribui valori variabilelor.

a = 5  atrribuie valoarea 5 (din dreapta) variabilei din stanga

Sunt mai multi operatori compusi cum ar fi:


a += 5 ceea ce este echivalent cu a = a + 5.

ssignment operators in Python

Operator Example Equivatent to

= x=5 x=5

+= x += 5 x=x+5

-= x -= 5 x=x-5

*= x *= 5 x=x*5

/= x /= 5 x=x/5

%= x %= 5 x=x%5

//= x //= 5 x = x // 5

**= x **= 5 x = x ** 5

&= x &= 5 x=x&5

|= x |= 5 x=x|5

^= x ^= 5 x=x^5

>>= x >>= 5 x = x >> 5

<<= x <<= 5 x = x << 5


Laborator – Software pentru Aparatura Medicala- Ioana Dogaru

Exemple de programe
Sa se scrie un program care calculeaza factorialul unui numar  numar introdus de catre
utilizator

Rezolvare: Sa se execute scriptul de mai jos si sa se urmareasca rezultatul

num = int(input("Enter a number: "))


factorial = 1
# verificare daca numarul introdus este pozitiv sau negativ
if num < 0:
print("Factorialul nu se poate calcula pentru numere negative!")
elif num == 0:
print("Factorialul pentru 0 este 1")
else:
for i in range(1,num + 1):
factorial = factorial*i
print("Factorialul pentru",num,"este",factorial)

Rezultatul programului:
Daca se introduce de exemplu valoarea 7  la iesire se obtine 5040.

Exercitiu: Sa se verifice toate cazurile pentru num (zero, negativ, pozitiv)

Sa se scrie un program pentru calculul factorialului utilizand functii recursive

Rezolvare: Sa se execute scriptul de mai jos si sa se urmareasca rezultatul

# program pentru calculul factorialului utilizand functii recursive


def recur_factorial(n):
"""functie care returneaza factorialul
unui numar utilizand functia recursiva"""
if n == 1:
return n
else:
return n*recur_factorial(n-1)
num = int(input("Enter a number: "))
# verificare valoare num
if num < 0:
print("Factorialul nu se poate calcula pentru numere negative!")
elif num == 0:
print("Factorialul pentru 0 este 1")
else:
print("Factorialul pentru",num,"este",recur_factorial(num))

Observatii: Rezultatul programului este acelasi cu cel de mai sus. Comentariu pentru linii multiple este
""" la inceput si respectiv la sfarsitul comentariului.

Sa se scrie un program pentru a converti in format binar, octal sau hexazecimal un numar zecimal
Laborator – Software pentru Aparatura Medicala- Ioana Dogaru

Rezolvare: Sa se execute scriptul de mai jos si sa se urmareasca rezultatul

# valoare care se doreste a fi converita


dec = 344
print("Valoarea zecimala",dec,"este:")
print(bin(dec),"in binar.")
print(oct(dec),"in octal.")
print(hex(dec),"in hexazecimal.")

Rezultat:
Valoarea zecimala 344 este:
0b101011000 in binar.
0o530 in octal.
0x158 in hexazecimal.

Exercitiu: Sa se modifice programul, astfel incat valoarea numarului sa fie preluata de la tastatura. Sa se
modifice programul de mai sus astfel incat sa se utilizeze si sa se apeleze o functie care primeste ca
argument valoarea zecimala introduse de catre utilizator.

Sa se scrie un program pentru a converti in format binar un numar zecimal se vor utiliza functii
recursive

Numerele zecimale se convertesc in format binar prin impartirea succesiva a numarului la 2 si se iau in
ordine inversa valorile restului impartirii: (exemplul de mai jos  se converteste valoarea 34 in zecimal
in binar prin secventa 100010

Rezolvare: Sa se execute scriptul de mai jos si sa se urmareasca rezultatul

def convertToBinary(n):
# functie pentru a afisa numarul binar - se utilizeaza functii
recursive
if n > 1:
convertToBinary(n//2)
Laborator – Software pentru Aparatura Medicala- Ioana Dogaru
print(n % 2,end = '')
# decimal number
dec = 34
convertToBinary(dec)

Rezultat:
Valoarea care se converteste este 34 si se obtine valoarea in binar 100010

Exercitiu: Sa se modifice programul, astfel incat valoarea numarului sa fie preluata de la tastatura.

Sa se scrie un program care afiseaza toate numerele prime dintr-un interval dat

Rezolvare: Sa se execute scriptul de mai jos si sa se urmareasca rezultatul

# intervalul introdus
lower = 900
upper = 1000
print("Numerele prime intre",lower,"and",upper,"sunt:")
for num in range(lower,upper + 1):
# mai mari ca 1
if num > 1:
for i in range(2,num):
if (num % i) == 0:
break
else:
print(num)

Rezultat:
Numerele prime intre 900 and 1000 sunt:
907
911
919
929
937
941
947
953
967
971
977
983
991
997

Exercitiu: Sa se modifice programul, astfel incat intervalul sa fie preluat de la tastatura.

Sa se scrie un program care preia data de la sistemul de operare

Rezolvare: Sa se execute scriptul de mai jos si sa se urmareasca rezultatul

from datetime import date


now = date.today()
print(now)
Laborator – Software pentru Aparatura Medicala- Ioana Dogaru
Observatii: Se utilizeaza si se importa biblioteca standard datetime

Cu datele calendaristice se pot realiza operatii:

from datetime import date


now = date.today()
print(now)
birthday = date(1964, 7, 31)
age = now - birthday
print(age.days)

Sa se scrie un program care afiseaza calendarul pentru un an si o luna dorita

Rezolvare: Sa se execute scriptul de mai jos si sa se urmareasca rezultatul

import calendar
yy = int(input("Introduceti anul: "))
mm = int(input("Introduceti luna: "))
# afisare calendar
print(calendar.month(yy, mm))

Observatii: Se utilizeaza si se importa biblioteca standard calendar

Exemplu introductiv – Utilizare biblioteca Matplotlib


(biblioteca utilizata pentru plotare)

import numpy as np
import matplotlib.pyplot as plt

n_groups = 5
means_men = (20, 35, 30, 35, 27)
std_men = (2, 3, 4, 1, 2)
means_women = (25, 32, 34, 20, 25)
std_women = (3, 5, 2, 3, 3)
fig, ax = plt.subplots()
index = np.arange(n_groups)
bar_width = 0.35
opacity = 0.4
error_config = {'ecolor': '0.3'}

rects1 = ax.bar(index, means_men, bar_width,


alpha=opacity, color='b',
yerr=std_men, error_kw=error_config,
label='Men')

rects2 = ax.bar(index + bar_width, means_women, bar_width,


alpha=opacity, color='r',
yerr=std_women, error_kw=error_config,
label='Women')

ax.set_xlabel('Group')
ax.set_ylabel('Scores')
ax.set_title('Scores by group and gender')
Laborator – Software pentru Aparatura Medicala- Ioana Dogaru
ax.set_xticks(index + bar_width / 2)
ax.set_xticklabels(('A', 'B', 'C', 'D', 'E'))
ax.legend()

fig.tight_layout()
plt.show()

Rezultat:

Bibliografie:
[1] Python Software Foundation - https://www.python.org/
[2] Anaconda IDE - https://www.anaconda.com/
[3] Mark Lutz – OReilly – Learning Python
[4] https://www.programiz.com/python-programming
[5] http://sandbox.mc.edu/~bennet/python/index.html
[6] Lisa Tagliaferri - How To Code in Python 3, ISBN 978-0-9997730-1-7
[7] Guido van Rossum and the Python development team – Python tutorial
[8] Matplotlib - https://matplotlib.org/gallery/statistics/barchart_demo.html