Sunteți pe pagina 1din 55

Python 3

Fundamentele utilizarii limbajului Python

Fundamentele utilizarii limbajului SQL

In acest curs NU este necesar sa aveti cunostinte de


programare
Scopul cursului

Transformăm datele în informație

Accent pe analiza și generarea rezultatelor

INCREZĂTOR și COMPETENT !
Materiale

Platforma Moodle
https://curs.upb.ro/2023/course/
view.php?id=10517

14-IM-L-A2-S2: Programarea
calculatoarelor și limbaje de
programare (Seriile 1,2 - 2023)
Structura cursului

Saptamanile 1...6 curs si laborator Introducere in PYTHON

Saptamana 7 – Verificare laborator PYTHON

Saptamanile 8...14 curs si laborator Introducere OOP si SQL

Examen – in sesiune
Ce se asteapta de la voi


Prezenta obligatorie la laborator


NU se fac recuperari la laborator.

Prezenta obligatorie la:

Verificarea practica laborator PYTHON

Prezentare tema OOP si SQL


Calculul Notei Finale
30% din nota Verificare practica laborator PYTHON

20% din nota Teste/Teme OOP si SQL

50% din nota Examen final in sesiune

Cerinte minimale pentru promovare:

-obtinere min 50% din punctajul cumulat (verificare practică de


laborator, teste si teme)

-obtinere min 50% din punctajul examenului final

-promovarea cu punctajul acumulat 5.00 (nu se rotunjeste 4.50)


Curs 1

Limbajul PYTHON 3
Medii de programare:
Spyder
Ipython
Jupyter Notebook
Scopul intregului curs

Încrezător și competent!
Cum să scriem cod

Cum să citim/interpretam cod

Ce pot și ce nu pot face dpdv al calculelor


Calcul Științific
ȘTIINȚA
Teoretică
Experimentală

ȘTIINȚA
Teotetică (Calcul Științific)
Experimentală (Calcul Științific)
Calcul Științific

In cele mai multe domenii ale științei pe langa partea de calcul


numeric sunt necesare diverse simulări sau modelari pe calculator.

Limbajele de programare PYTHON, R și MATLAB sunt folosite în


mediul academic pentru cercetare și calcul știiințific.
Calcul Stiintific
În mediul științinfic/academic rezultatele și metodele utilizate sunt publicate
și puse la dispoziția altor oameni de știință, iar toate datele experimentale
trebuie să fie disponibile la cerere.

Se consideră ne științific procedura de a reține detaliile cruciale într-o probă


teoretică sau o metodă experimentală, care ar putea împiedica alți oameni de
știință de a replica și reproduce rezultatele.

În științele computaționale nu există încă reguli bine stabilite pentru modul în


care ar trebui să fie manipulat codul sursă și datele generate.

Codul sursă pentru software-ul de simulare este reținut și considerat un


avantaj competitiv (sau inutil să publice).

Unele reviste de prestigiu au început să ceară autorilor să furnizeze codul sursă


pentru software-ul de simulare utilizat în publicații, la cerere.
The case for open computer programs, D.C. Ince, Nature 482, 485-488 (2012).
https://www.nature.com/nature/volumes/482/issues/7386
Calcul Științific
Rezultatele științifice trebuie să fie:

Reproduse: trebuie să fie posibilă reproducerea rezultatelor obținute în urma


simulărilor numerice aplicând o altă metodă independentă, sau utilizând o altă
metodă cu totul nouă.

Replicabile: aceleași calculele numerice/simulările ar trebui să poată fi rulate


de alti oameni de știință și să se obțină aceleași rezultate, urmând metodele
specificate într-o publicație.

Trebuie:
-să se păstreze mediul/codul sursă/versiunea softwar-elor externe care au fost
utilizate pentru producerea datelor numerice/ simularilor în lucrările publicate.

-să se ofere informații suplimentare cu privire la metodele utilizate, și, probabil,


de asemenea, codurile de simulare, la un cititor interesat care solicită acest lucru
(chiar și după ani lucrarea a fost publicată!).
Calcul Științific

Ce presupune cercetarea științifică ?

Să se obțină date ( din simulări, din experimente de control)

Să se manipuleze și să se proceseze datele

Să se vizualizeze rezultatele (pentru a înțelege ceea ce facem!)

Să se comunice rezultatele: rapoarte, publicații, să se scrie prezentări.


De ce Python ?
De ce Python ?
De ce Python ?

Python foarte asemanator cu orice limbaj de vorbire

Exemplu:

grup = ['Ion', 'Elena', 'Angela', 'Ilie']


for prieten in grup:
print("Buna" + prieten)

In Python usor de inteles concepte fundamentale ale


programarii : structuri de date si algoritmi
De ce Python ?
Python
for i in range(10):
print("Hello.World!")

Bash
for in in {1..10}; do
echo Hello, World!
done

PowerShell
for ( $i=1; $i –le 10; $i++) {
Write-Host "Hello, World!"
}
De ce PYTHON pentru Calculul Științific ?
• Comunitate mare de utilizatori, multă documentație
• Vast ecosistem de biblioteci științifice/pachete/medii:
NumPy: http://numpy.scipy.org –Numerical Python
SciPy: http://www.scipy.org - Scientific Python
Matplotlib: http://www.matplotlib.org - Grafică
Pandas – http://pandas.pydata.org/ - Analiza Datelor

• Performanță mare datorită integrării cu coduri optimizate scrise în


C / C++ și Fortran: blas, atlas blas, LAPACK, arpack, Intel MKL, …

•Suport bun pentru procesare paralelă cu procese și threads:


comunicare interprocese (MPI), GPU de calcul (OpenCL si CUDA)

•Adecvat pentru utilizarea în calcule de înaltă performanță - clustere.

•Nu există costuri de licență -perfect atât pentru aplicații industriale cât și
ISTORIA PYTHON
•Python a fost creat de Guido van Rossum la sfârșitul anilor 1980, la Institutul
Național de Cercetare pentru Matematică și Informatică în Țările de Jos. La
fel ca Perl, codul sursă Python este disponibil sub licența GNU General
Public License (GPL).

• Python este un limbaj de programare de scop general, de nivel înalt,


interpretat, de scripting orientat pe obiecte și interactiv.

• Inca din 1991 s-au dezvoltat mai multe versiuni disponibile pentru
WINDOWS, UNIX, și Mac OS .
Python 2.4, 2.6, 2.7 …(2000)… Python …. 3.7.11 (2020)
Ultima versiunea Python 3.11.5 – Mai 2023
https://www.python.org/downloads/

Verificati : Windows PC : in cmd.exe C: \Users\>python –version


Mac sau Linux: in Terminal python --version
ISTORIA PYTHON

Python are multe module/biblioteci care sunt open-source si gratuite:

Statistica, calcule numerice de optimizare care implică, algebra liniară,


integrare, interpolare, precum și alte funcții speciale folosind obiecte,
lucru cu matrici, machine learning, data mining, desenare 2D, 3D,
dezvoltare web, inteligenta artificiala, etc

Aceste module/biblioteci au un anumit scop și joacă un rol important în


cercetarea în domenii diverse: economie, finanțe, științe biologice, științe
sociale, sănătate, și multe altele.
ISTORIA PYTHON

Python are variate implementări:

Jython, scris in limbajul Java pentru Java Virtual Machine

IronPython scris in C# pentru Common Language Infrastructure

PyPy scris in RPython si translatat in C

Aceste implementări funcționează în limbajul în care au fost scrise, dar sunt


capabile să interacționeze cu alte limbaje prin utilizarea modulelor.

Majoritatea acestor module funcționează pe modelul de dezvoltare


comunitară, sunt open-source și gratuite.
Istoria PYTHON si status-ul curent
Puteti citi despre istoria Python:

Istoria Python- https://en.wikipedia.org/wiki/History_of_Python


Istoria sofrwares https://docs.python.org/3.0/license.html

Python a fost numit recent limbajul de programare cu


Click to add text
cea mai rapidă creștere,puteți afla mai multe în aceste articole:

https://stackoverflow.blog/2017/09/06/incredible-growth-python/

https://www.netguru.com/blog/future-of-python

https://insights.stackoverflow.com/survey/2018#technology
Programare PYTHON

Rulam
Cod de programare = cod
succesiune de instrucțiuni
Scriem Click to add Evaluam
(linii de cod) cod
cod text

Care din următoarele sunt definiții corecte ale compilării?

A. citiți codul înainte de a-l executa pentru a vedea dacă există erori
evidente

B. rulează codul pentru a-și îndeplini efectiv instrucțiunile

C. traducerea codului pe care îl scriem în instrucțiunile de nivel scăzut


pe care computerul le înțelege

Evaluam : erori , rezultate incorecte, rezultate corecte


Programare PYTHON
Decizia compilarii depinde de limbajul de programare

Static (compilare)

Limbajele de programare C sau Java necesita compilare

Dinamic ( interpretat)

Limbajele de programare Python sau JavaScript NU necesita compilare


Ruleaza fiecare linie de cod una cate una

Diferența între limbajele statice și dinamice este dacă tot codul este sau nu
compilat înainte de a fi rulat.
Ce este PYTHON ?
• Python este un limbaj de programare de
nivel înalt, interpretat, interactiv,
scripting orientat pe obiecte, și de scop
general.
• Python este interpretat: codul este
procesat în timpul rulării de către un
interpretor, nu este nevoie să compilați
programul înainte de a-l executa - similar
cu PERL și PHP.
• Python este interactiv: puteți sta la un
Python prompt și să interacționați în mod
direct pentru a scrie programe, ușor de
testat si depanat.
• Python este orientat-obiect: Python acceptă
stilul orientat pe obiect sau tehnica de
programare care incapsuleaza codul în
interiorul obiectelor.
Caracteristicile PYTHON
• Python este portabil: rulează pe o varietate de platforme hardware și are
aceeași interfață pe Windows,UNIX și Macintosh OS.

• Python este extensibil: se pot adăuga module de nivel jos pentru interpretor,
module ce permit adăugarea, personalizarea sau eficientizarea diverselor
instrumentele.

• Python este DataBaseAware: oferă interfețe pentru toate bazele de date


comerciale importante.

• Python are Programare GUI: suportă aplicații GUI, care pot fi create și
portate, are multe apeluri de sistem, biblioteci și sisteme de ferestre pentru
Windows MFC, Macintosh și sistemul X Window of Unix.

• Python este scalabil: oferă o structură mai bună și suport pentru programe
mai mari decât shell scripting.
Caracteristicile limbajului PYTHON ?
• Python este ușor de învățat: puține cuvinte cheie, structură simplă/clară și cu
sintaxa minimalistă, perioadă scurtă de învățare:
Tipuri de date nivel înalt: siruri de caractere, liste, dicționare, etc.
Structurile obișnuite de control: if-else, if-elif-else, while, plus un for
iterator

• Python este intuitiv și ușor de citit: dacă este bine scris e simplu de citit și de
înțeles.

• Python este expresiv, ușor de întreținut: mai puține linii de cod, mai puține
bug-uri, mai ușor de întreținut- mentenabilităte foarte bună cu dimensiunea
proiectelor.

• Python poate fi folosit ca un limbaj de scripting sau pot fi compilat octet-cod


pentru construirea de aplicații mari. Suporta Garbage Colection automat.
Se integreaza usor cu C, Java, R, Julia, Haskell
Avantaje PYTHON
• Avantajul principal este ușurința de programare, minimizarea timpului
necesar pentru dezvoltare, depanare și menținerea codului.

• Limbaj bine conceput, încurajează multe bune practici de programare:


modular și orientat pe obiecte, sistem bun pentru ambalarea și reutilizarea
codului, cod mult mai transparent

• Documentație strâns integrată cu codul

• O maaaare bibliotecă standard care include protocoale de internet, operatii pe


stringuri, instrumente pentru servicii web si interfate cu sistemul de operare

• Python Package Index (PyPI) contine numeroase modules care faciliteaza


interactiunea dintre Python si alte limbaje/platforme de programare
Dezavantaje PYTHON

• Python este un limbaj interpretat, dinamic- executarea codului Python poate fi


lentă în comparație cu limbajele de programare compilate, C și Fortran.

• Python este GNU General Public License (GPL) -oarecum descentralizat, cu


mediu diferit, pachete și documentație răspândită în locuri diferite.

• Python poate fi mai greu la început.


PAUZA ....revenim in 10 min
Medii de dezvoltare - PYTHON

Integrated Development Environments (IDEs) - medii diferite de


dezvoltare prin care interpretorul Python poate fi folosit:
• PythonXY
• PyCharm
• IDLE - offline editor
• Trinket – online editor https://docs.trinket.io
• IPython
• IPython notebook / Jupyter notebook
• Spyder

Ideal de folosit IPython plus un editor de text, ceea ce vine integrat


in distribuția Anaconda (https://www.anaconda.org)
Instalare
Există diferite moduri de a instala Python, dar distribuții specializate
au fost create/pre-construite cu diferite module specifice pentru
comunitatea științifică, care funcționează similar indiferent dacă
utilizațiWindows, Linux sau Mac OS X.

• Miniconda vă oferă interpretul Python împreună cu o linie de


comandă numită conda care funcționează ca un manager
multiplataforma de pachete Python
https://docs.conda.io/en/latest/miniconda.html
• Anaconda include atât Python, cât și conda și, în plus include o
suită de alte pachete preinstalate orientate spre calculul științific (să
vă așteptați ca instalarea să consume mulți gigaocteți de spaţiu pe
disc)
https://www.anaconda.org
Instalare
Oricare din pachetele incluse în Anaconda poate fi instalat manual
deasupra în Miniconda.

Descărcați și instalați pachetul Miniconda (alegeți versiunea cu


Python 3)
https://docs.conda.io/en/latest/miniconda.html

Apoi instalați pachetele de bază prin tastarea comenzii cu sintaxa:


conda install numele pachetului
Exemplu:
$ conda install numpy pandas scikit-learn matplotlib seaborn
ipython-notebook

Pentru mai multe informații despre conda, inclusiv informații despre


crearea și folosirea mediilor conda consultați documentația online:
https://conda.io/en/latest/
PYTHON Interpretor
Dacă aveți Python instalat pe computer, puteți executa interpretorul

Interpretorul Python este un program care citește și executa codul


Python în fișierele transmise acestuia ca argumente.

De exemplu, pentru a rula un fișier


test.py care conține codul Python in
linia de comandă, scrieți :
python test.py

De asemenea, putem apela


interpretorul pur și simplu prin
tastarea >>>python (la linia de
comandă) și în mod interactiv scriem
cod Python în interpretor.
IPython shell
IPython (Interactive Python ) - Fernando Perez 2001
“Tools for the entire lifecycle of research computing.”
IPython este interpretorului Python îmbunătățit foarte mult.
Python - motorul, IPython - un control panel interactiv
IPython shell
Lansați interfeța IPython prin tastarea ipython pe linia de comandă

gabi@koko:~$ ipython
Python 3.8.8 (default, Apr 13 2021, 19:58:26)
Type 'copyright', 'credits' or 'license' for more
information
IPython 7.26.0 -- An enhanced Interactive Python.
Type '?' for help.

In [1]:

Dacă ați instalat distribuția Anaconda, doar selectati IPython


Ipython shell
Câteva din caracteristicile utile din IPython:
Istoricul comenzilor - folosind săgețile în sus și în jos de pe
tastatură

Tasta TAB – auto-completarea aproape pe orice, nu numai pe


obiecte, nume de funcții sau comenzi python

Extragerea automata a documentației Python, obiecte, clase și


funcții – folosind punct . ? sau ??

Interacțiunea cu sistemul de operare prin intermediul comenzilor


precedate de % și de !

Suport pentru mai multe procese de back-end paralele, care pot


rula pe clustere sau de servicii de tip cloud - Amazon EE2.
Ipython Notebook - Jupyter Notebook
Jupyter Notebook - a browser-based graphical interface to the
IPython shell - util în dezvoltare, colaborare, partajarea și chiar
publicarea rezultatelor din comunitatea științifică.

Notebook-ul permite utilizatorului să introducă text formatat și


vizualizări dinamice, ecuații matematice, widget-uri JavaScript, etc
Aceste documente pot fi salvate într-un mod care permite altor
utilizatori să le deschidă și să execute codul în propriile sisteme.

Notebook-ul IPython este de fapt un caz special al structurii mai


largi a notebook-ului Jupyter, care cuprinde notebook-uri pentru
Julia, R și alte limbaje de programare.

IPython shell sau IPython notebook


Jupyter Notebook
Jupyter Notebook este vizualizat și editat prin browserul web care
va trebui să se conecteze la un proces Python care va rula si
executa codul -acest proces este cunoscut sub numele de
„kernel”
Lansați interfeța prin tastarea in linia de comandă :
$ jupyter notebook
[NotebookApp] Serving notebooks from local
directory: /Users/jakevdp/...
[NotebookApp] 0 active kernels
[NotebookApp] The IPython Notebook is running at:
http://localhost:8888/
[NotebookApp] Use Control-C to stop this server
and shut down all kernels...

Dacă ați instalat distribuția Anaconda, doar selectati Jupyter


Jupyter Notebook
Jupyter Notebook
Spyder
Spyder este un IDE Python pentru calcul științific asemănător cu
MATLAB-ul - totul, de la editare de cod, execuție și depanare se
efectuează într-un singur mediu de lucru:
-editor de cod puternic, cu sintaxa high-lighting, introspectia
codulului dinamică și integrarea cu debugger-ul Python.
explorarea variabilelor, comanda prompt IPython.
- documentație integrată.
PYTHON Interpretor – on line
Puteți practica si folosind unul dintre numeroasele interpretoare sau
codepad-uri Python disponibile online.

Un interpretor este mai interactiv decât un codepad, dar ambele vă


permit să executați cod și să vedeți rezultatele.

Linkuri către cele mai populare interpretoare și codepad-uri online:

https://www.python.org/shell/
https://www.onlinegdb.com/online_python_interpreter
https://repl.it/languages/python3
https://www.tutorialspoint.com/execute_python3_online.php
https://rextester.com/l/python3_online_compiler
https://trinket.io/python3
Versiunea Python2 sau Python3 ?
Python 3 a apărut în 2008, versiunea finala Python 2.7 în 2010 astfel
vesiunile Python 3.0 și 3.1 au fost portate și în versiunile 2.6 și 2.7

O mulțime de cod existent și pachete au fost scrise pentru Python2,


Python2 este în continuare versiunea cea mai răspândită.

Majoritatea comunitații stiințifice nu a migrat incă la Python3.

Mai multe versiuni de Python pot fi instalate în paralel !

Exista convertoare 2to3 (code 3.x să fie generat din code 2.x) și 3to2
convertește code3.x la code2.x

https://wiki.python.org/moin/Python2orPython3
https://docs.python.org/3/whatsnew/3.0.html
Python3
Îmbunătățiri pentru a face limbajul mai clar și mai consistent:
Funcția print a fost înlocuită cu print()

Python2: print "Răspunsul este", 2*2


Python3: print("Răspunsul este", 2*2)

Python2: print x, # virgula suspenda crearea unei linii noi


Python3: print(x, end=" ") # virgula apendează un spațiu

Python2: print "A\n", "B" va printa "A\nB\n"


Python3: print("A\n", "B") writes "A\n spatiu B\n"

Python2: print >>sys.stderr, "fatal error"


Python3: print("fatal error", file=sys.stderr)

Python3:print("Sunt <", 2**32, "> posibilități!", sep="") va printa:


Sunt <4294967296> posibilități!
Python3
Exemplu:
Python3: functia print() permite ca argumente cuvintele cheie sep și
end, pentru a specifica ce „tip de string” e folosit pentru a separa
argumentele sau a termina linia printată

Aceste „stringuri” sunt:


""– spațiu (default)
"\n" o linie noua

Această caracteristică face posibilă printarea mai multor valori, pe linii


separate cu un singur apel de funcție:

print(x, y, z, sep=”\n”)

Următoarea comanda cum va printa?


print("Sunt <", 2**3, "> posibilități!")
Built-in types: Python3
Python2: ambiguitatea “poate fi text, pot fi date arbitrare binare”-
nu există un tip de caracter, astfel încăt caracterele sa poată fi
reprezentate pur și simplu ca șiruri de lungime 1.
type str (utilizat, derutant, pentru ambele șiruri de caractere ASCII și
șiruri arbitrare de octeți )
type unicode (ptr siruri de caractere compus din caractere Unicode).

Python3:
type str (comportamentul și punerea în aplicare a tipului unicode
vechi).
type bytes (o secvență de numere întregi între 0 și 255 inclusiv,
conține întotdeauna date binare arbitrare)
Tipurile str și bytes nu pot fi amestecate! Trebuie convertite între
ele! str.encode() - de la str la bytes str(b, encoding=...)
bytes.decode() de la bytes la str. bytes(s, encoding=...)
Comparații clare și curate: Python3

Python2: permite compararea tipurilor diferite folosind <, >, etc:


>>> 42 < 'hello'
True

De ce se evalueaza la True ? Trebuia să fie evaluata ?

Python3: astfel de operații dau excepții


>>> 42 < 'hello'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unorderable types: int() < str()

Python2: <> # operator pentru „nu sunt egale” sau „sunt diferite”
Python3: != # operator pentru „nu sunt egale” sau „sunt diferite”
Python3
Operatorul de împărțire:

Python2: la fel ca în Java, C sau C++ , rezultatul e cel al funcției


'floor' când împărțim doi intregi:
>>> 1 / 2
0

Python3: împărțirea a două nr intregi returneaza o valoare reală:


>>> 1 / 2
0.5

Python3: 1 // 2
0
# operator // pentru împarțirea cu rezultatul funcției 'floor'
Test

Folosind unul din interpretoarele on line:

1. Scrieți comanda Python care afișează pe ecran


Programez în Python!

Amintiți-vă că trebuie să utilizați funcția print () și să folosiți


ghilimele pentru a delimita șirul.

2 Scrieti comanda Python ptr a calcula (((1+2)*3)/4) la puterea


5
Trebuie să utilizați funcția print () și să folosiți atatea seturi de
paranteze cate aveti nevoie, iar ridicarea la putere se face cu **
Instalare

Distribuții specializate au fost create/pre-construite cu diferite


module specifice pentru comunitatea științifică, pentru Windows,
Unix, Mac OS :

•Anacona www.anaconda.org

Editoarele de text Spyder sau Scite sunt deja incorporate!


PEP - Python Enhancement Proposals

În Python, există sute de Python Enhancement Proposals, denumite


în mod obișnuit PEP.

PEP8 este un ghid stilistic standard pentru Python, scris chiar de


Guido van Rossum însuși.

PEP20, numit de obicei Zen-ul Python scris de Tim Peters sunt 20


de aforisme pentru a scrie cod Python stilistic și corect.
PEP20 – Zen of Python
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!
Bibliografie
Python: http://www.python.org

Python Documentations: https://docs.python.org/3

Python Tutorial https://docs.python.org/3/tutorial

Python Tutorial https://www.w3schools.com/python/default.asp

IPython: http://ipython.org

Jupyter Notebook: https://jupyter.org

Python Wiki https://en.wikibooks.org/wiki/Python_Programming


Bibliografie

https://github.com/jrjohansson/scientific-python-lectures/blob/
master/Lecture-1-Introduction-to-Python-Programming.ipynb

Think Python – How to Think like a Computer Scientist


Allen B. Downey, 2nd Edition ptr Python 3
http://greenteapress.com/wp/think-python-2e/

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