Sei sulla pagina 1di 53

Introduzione a Python

1
Python
 È un linguaggio di programmazione:
 ad alto livello
 semplice da imparare e usare
 potente e produttivo
 ottimo anche come primo linguaggio (molto simile
allo pseudocodice)
 Estensibile
 Tipizzazione forte e dinamica
 Inoltre è
 open source (www.python.org)
 multipiattaforma
 facilmente integrabile con C/C++ e Java

2
Python
 Python è nato alla fine degli anni ‘80.
 Ideato dall’informatico olandese Guido
van Rossum, definito «Benevolo Dittatore
a Vita" (Benevolent Dictator for Life), nel
senso che continua a seguire il processo di
sviluppo di Python, prendendo decisioni
ovunque necessarie.
 Laureato all’Università di Amsterdam e
grande appassionato del Monthy Python's
Flying Circus (Il Circo Volante dei Monthy
Python), l'innovativa e fortunata serie
comica trasmessa dalla BBC tra il 1969 e
il 1974, che fu il trampolino di lancio del
gruppo comico britannico Monthy Python.

 Python discende dal linguaggio ABC


3
Il linguaggio Pyhton
 versione attuale del linguaggio: 3.8
 prevalentemente object-oriented, ma multi-
paradigma (object-oriented, procedurale,
funzionale, etc.)
 utilizza un interprete per l’esecuzione (non
compilato)
 dispone di librerie molto vaste per: parsing
(HTML/XML), networking, GUI, accesso a database,
Web scripting, etc
Richiami di programmazione
 codice o codice sorgente : Sequenza di istruzioni.

 sintassi: L’insieme di strutture e comandi che ppossono essere usate in


un particolare linguaggio di programmazione.

 output: I messaggi stampati per l’utemte da un programma.

 console: Finestra di testo in cui sono stampati i messaggi di output.


 Alcuni editors di codici sorgente aprono la console in una finestra
esterna, altri contengono la propria finestra console.

5
Compilare e interpretare
 Molti linguaggi richiedono di compilare (tradurre) il programma in
una forma che possa essere compresa dalla macchina.

 Python è interpretato.
Il programma viene interpretato ed immediatamente eseguito
istruzione per istruzione. Non viene generato né il formato
intermedio (oggetto) né l’eseguibile.
6
Il linguaggio Pyhton
È molto diffuso:
 RedHat
anaconda (installazione), tool di configurazione
grafici, log viewer
 NASA
 www.google.com
 Industrial Light and Magic
quelli che fanno gli effetti speciali per Star Wars...
 E molti altri …
 È incluso anche in Paint Shop Pro
 Ha centinaia di moduli (librerie) per ogni
occorrenza

7
Anaconda
 Anaconda è una piattaforma Python particolarmente diffusa
per l’analisi dei dati e per il calcolo scientifico

 È un progetto open source sviluppato da Continuum


Analytics Inc., disponibile per Windows, Mac OS X e Linux

 Include le librerie più diffuse: NumPy, SciPy, Matplotlib,


Pandas, IPython, Cython

 Include Spyder, un ambiente di sviluppo Python

 Include conda, un package manager indipendente dalla


piattaforma

8
Installazione di Anaconda
 Scaricare il pacchetto “Python 3.x version” dal sito
di Anaconda
https://www.anaconda.com/download/;
 Eseguire il programma di installazione scaricato;
 Impostare l’installazione di Anaconda solamente
per l’utente corrente (Just Me) e lasciare il percorso
di installazione invariato;
 Nelle opzioni avanzate scegliere di registrare
Anaconda come l’installazione di Python di sistema
e deselezionare l’opzione relativa all’aggiunta di
Anaconda al PATH;

9
Installazione di Anaconda

10
Verificare l’installazione di
Anaconda
Eseguire “Anaconda Navigator”

cercandolo nella barra di ricerca


di Windows oppure dal menù
Start -> Anaconda3 (64-bit) ->
Anaconda Navigator.
Il primo avvio potrebbe
richiedere diversi secondi.
Passare alla sezione
“Installare e lanciare
Jupyter”.

11
 Se Anaconda è stato installato
correttamente allora Jupyter dovrebbe
essere già presente tra i tool pre-
installati.
 Aprire Anaconda Navigator. Nella prima
schermata sono presenti una serie di tile
associate ai tool comunemente utilizzati
con Anaconda. Jupyter dovrebbe essere
uno di questi. Premete Launch per
verificarne il funzionamento.
 Se non appare “Launch” significa che

Jupyter non è stato installato: in tal


caso cliccare su “Install” .

Chiudere Jupyter. Chiudere Anaconda Navigator. Verrà richiesto


di terminare l’applicazione “notebook”. Confermare.
Provare ad avviare Spyder.
12
Eseguire programmi Pyhton
 Due possibili modalità di esecuzione:

 Modalità interattiva
$$ python
>> a=3+5

 Modalità con Program Files


$$ vim myprogram.py
$$ python myprogram.py
Variabili, Tipi, Espressioni
 In un programma Python non è necessario dichiarare le variabili
ed il loro tipo.
 L’assegnazione del tipo avviene dinamicamente a run-
time.

 Assegnazione di valori a variabili.

message=“Hello world”
a=5
x=2.34
>>type(message)
<type ‘str’>
Variabili, Tipi, Espressioni
 Anche i numeri complessi vengono supportati
 Per contrassegnare i numeri immaginari si usa il suffisso ‘j’ o ‘J’.
 I numeri complessi con una componente reale non nulla
vengono indicati come ‘(real+imagj)’, o possono essere creati
con la funzione ‘complex(real, imag)’.
>>> 1j * 1J
(-1+0j)
>>> 1j * complex(0,1)
(-1+0j)
>>> 3+1j*3
(3+3j)
>>> (3+1j)*3
(9+3j)
>>> (1+2j)/(1+1j)
(1.5+0.5j)
Variabili, Tipi, Espressioni
In modo interattivo, l’ultima espressione stampata è assegnata alla
variabile _. Questo facilita i calcoli in successione quando si sta usando
Python come calcolatrice da tavolo, ad esempio:

>>> tassa = 12.5 / 100


>>> prezzo = 100.50
>>> prezzo * tassa
12.5625
>>> prezzo + _
113.0625
>>> round(_, 2)
113.06

Questa variabile deve essere trattata dall’utente come di sola lettura. Non
le si deve assegnare esplicitamente un valore, si creerebbe una variabile
locale indipendente con lo stesso nome che maschererebbe la variabile
built-in ed il suo comportamento particolare.
Espressioni
 Operatori logici: and or not
 Operatori di confronto: >, <, >=, <=
 Operatori matematici: + - / * // ** %
 Assegnazione di valore: =
 Costanti Booleane: True False
Operatori matematici

Operatore Funzione Esempi


** Elevamento a potenza a**3 ; anche funzione pow(x,y)
* Moltiplicazione a*b ; 3*2 => 6
/ Divisione a/b ; 5/2 => 2.5
// Divisione intera a//b ; 5//2.0 => 2.0
% Resto a%b ; 5/2. => 1.0
+ Addizione a+b ; 2+5 => 7
- Sottrazione a-b ; 2-5 => -3

18
Esempi di espressioni
 Esempio:
1 + 4 * 3
42

 Operatori aritmetici:
+ - * / somma, sottrazione/negazione, moltiplicazione, divisione
% modulo, resto della divisione intera
** elevazione ad esponente

 precedenza: Ordine in cui sono eseguite le operazioni.


* / % ** hanno la prece4denza rispetto a + -
1 + 3 * 4 è 13

 Si possono usare le parentesi per forzare un ordine diverso.

(1 + 3) * 4 è 16
19
Funzioni matematiche
 In Python sono definite urili funzioni matematiche.
Nome comando Descrizione Costanti Descrizione
abs(valore) valore assoluto e 2.7182818...
ceil(valore) approssima all’intero superiore pi 3.1415926...
cos(valore) coseno, in radianti
floor(valore) approssima all’intero inferiore
log(valore) logaritmo naturale (base e)
log10(valore) logaritmo base 10
max(valore1, valore2) il più grande di due valori
min(valore1, valore2) il più piccolo di due valori
round(valore) l’intero piu vicino
sin(valore) seno, in radianti
sqrt(valore) radice quadrata

 Per usare molti di questi comandi all’inizio del programma bisogna


scrivere:
from math import *
import math 20
Variabili
 variabile: Una locazione di memoria con un assegneto
nome che può memorizzare un valore.

 Assegnezione di valore.
 sintassi:
nome = valore

 Esempi: x = 5
gpa = 3.14

x 5 gpa 3.14

 Una variabile può essere utilizzata in un’espressione:


x + 4 è 9
Un valore può essere assegnato simultaneamente a variabili
diverse:
>>> x = y = z = 0 # Zero x, y e z
21
print
 print : Produce un output di testo sulla console.

 Sintassi:
print("Messaggio“)
print(Espressione)
 Stampa un messaggio di testo o il valore di un’espressione sulla
console, e sposta il cursore sulla linea successiva.

print(Item1, Item2, ..., ItemN)


 Stampa diversi messaggi e/o espressioni sulla stessa linea.

 Esempi:
print("Hello, world!“)
age = 45
print(“You have”, 65 - age, “years until retirement”)
Output:
Hello, world!
You have 20 years until retirement 22
input
 input : Legge un numero dall’input dell’utente.

 Si può memorizzare il risultato di input in una variabile.

 Esempio:
age = input("How old are you? ")
print ( "Your age is", age)
print "You have", 65 - age, "years until retirement"

Output:

How old are you? 53


Your age is 53
You have 12 years until retirement
23
Il ciclo for
 for loop: Ripete un insieme di istruzioni su un gruppo di valori.
for variableName in groupOfValues:
statements
 Si incolonnano le istruzioni da ripetere con i tabs o gli spazi.
 variableName assegna un none ad ogni valore, in modo da
poterli riferire nelle statements.
 groupOfValues può essere un range di interi specificato tramite
la funzione range.
 Esempio:
for x in range(1, 6):
print (x, "squared is", x * x)

Output:
1 squared is 1
2 squared is 4
3 squared is 9
4 squared is 16
5 squared is 25
24
Indentazione e Blocchi
 Python utilizza l’indentazione (e non le parentesi graffe) per
distinguere l’inizio e la fine di un blocco (es. Il codice da
eseguire all’interno di un ciclo).
 Per questo motivo, indentare bene il codice è fondamentale!

while n>0: while n>0:


n=n-1 n=n-1
print n print n

DIVERSO!!
range
 The funzione range specifica un range di interi:
range(start, stop) - gli interi tra start (incluso) e stop (escluso)

Può anche accettare un terzo valore che indica la variazione tra due valori
consecutvi.
range(start, stop, step) - gli interi tra start (incluso) e stop
(escluso) con passo step

 Esempio:
for x in range(5, 0, -1):
print (x)
print "Blastoff!"

Output:
5
4
3
2
1
Blastoff!
26
Somma cumulativa

sum = 0
for i in range(1, 11):
sum = sum + (i * i)
print ("sum of first 10 squares is", sum)

Output:
sum of first 10 squares is 385

 Esercizio: Scrivere un programma Python che calcola il


fattoriale di un intero.

27
if
 if statement: Esegue un gruppo di istruzioni solo se una
certa condizione è verificata, altrimenti le istruzioni sono
saltate.

 Sintassi:
if condition:
statements

 Exsempio:
gpa = 3.4
if gpa > 2.0:
print ("Your application is accepted.“)

28
if/else
 if/else statement:
 Sintassi:
if condition:
statements
else:
statements

 Esempio:
gpa = 1.4
if gpa > 2.0:
print ("Welcome to Parthenope University!“)
else:
print ("Your application is denied.“)

 Condizioni multiple elif ("else if"):


if condition:
statements
elif condition:
statements
else:
statements
29
while
 while loop: Executes a group of statements as long as a condition is True.
 good for indefinite loops (repeat an unknown number of times)

 Syntax:
while condition:
statements

 Example:
number = 1
while number < 200:
print number,
number = number * 2

 Output:
1 2 4 8 16 32 64 128

30
Operazioni logiche
 Molte espressioni logiche usano operatori relazionali:
Operator Meaning Example Result
== equals 1 + 1 == 2 True
!= does not equal 3.2 != 2.5 True
< less than 10 < 5 False
> greater than 10 > 5 True
<= less than or equal to 126 <= 100 False
>= greater than or equal to 5.0 >= 5.0 True

 Espressioni logiche possono essere combinate con operatori


logici
Operator Example Result
and 9 != 6 and 2 < 3 True
or 2 == 3 or -1 < 5 True
not not 7 > 0 False

31
Liste
Il tipo lista può essere scritto come un elenco di valori separati
da virgole e compresi tra parentesi quadre. Gli elementi della
lista non devono essere necessariamente tutti dello stesso tipo.
>>> a = [’spam’, ’eggs’, 100, 1234]
>>> a
[’spam’, ’eggs’, 100, 1234]

Gli indici delle liste iniziano da 0.


>>> a[0]
’spam’
>>> a[3]
1234
>>> a[-2]
100
Liste
Indici
+---+---+---+---+---+---+
| a0 | a1| a2 | a3| a4 | a5|
+---+---+---+---+---+---+
0 1 2 3 4 5
-6 -5 -4 -3 -2 -1

>>> a = [’spam’, ’eggs’, 100, 1234]


>>> a[:2] # da indice 0 incluso a 2 escluso
>>> a[2:] # da indice 2 incluso alla fine
>>> a[1:-1] # da indice 1 incluso a -1 escluso
>>> a[:2] + [’bacon’, 2*2] # concatena le liste
[’spam’, ’eggs’, ’bacon’, 4]
>>> 3*a[:3] + [’Boe!’]
[’spam’,’eggs’,100,’spam’,’eggs’,100,’spam’,’eggs’,
100, ’Boe!’]
Altre operazioni sulle liste
>>> a = range(5) # [0,1,2,3,4]
>>> a.append(5) # [0,1,2,3,4,5]
>>> a.pop() # [0,1,2,3,4] per default elimina l’ultimo
5
>>> a.insert(0, 42) # [42,0,1,2,3,4]
>>> a.pop(0) # [0,1,2,3,4]
>>> a.reverse() # [4,3,2,1,0]
>>> a.sort() # [0,1,2,3,4]

>>> a=1.5+0.5j
>>> a.real
1.5
>>> a.imag
0.5
Liste di Elementi
Come con le stringhe:
 [] per accedere ad un elemento della lista
 in verifica la presenza di un elemento in una lista
 len restituisce la lunghezza della lista
 + concatena due liste
 * ripete una lista un dato numero di volte
Dichiarazione di Funzioni
 Keyword def per identificare l’inizio di una funzione

DEF nomeFUNZIONE (argomenti):


CORPO della FUNZIONE
RETURN valore (opzionale)

 Per richiamare una funzione:


nomeFUNZIONE (argomenti)
Funzioni Lambda
 Python consente di definire al volo piccole funzioni in una sola
riga (lambda-funzioni).
>> g= lamdba x: x**2
>> g(4)
16
• Le funzioni lambda non possono contenere comandi e non
possono contenere più di un’espressione
Dichiarazione di Funzioni
 (ES1): Scrivere il codice della funzione fattoriale.
Dichiarazione di Funzioni
 (ES1): Scrivere il codice della funzione fattoriale:
# Factorial function
def factorial(n):
if (n==0):
return 1
else:
return n*factorial(n-1)

>> print(factorial(4))
24
Parametri e Funzioni
 Python consente di definire funzioni con parametri
opzionali; se la funzione è chiamata senza argomento,
l’argomento prende il valore predefinito (indicato nella
signature della funzione).

def power(a,b=2):
return a**b

>> power(4,3)
64
>> power(4)
16
Librerie
Librerie di maggiore interesse :

 matplotlib per grafica e visualizzazione dati

 numpy per analisi numerica (vettori, matrici e funzioni


che operano su di essi)

 scipy per applicazioni scientifiche: Algoritmi, modelli,


statistica, integrazione, filtraggio, algebra lineare,
ottimizzazione

41
Array
Array
import array as arr
a = arr.array('d', [1, 3.5, "Hello"]) // Error

a = arr.array('d', [1.1, 3.5, 4.5])


print(a)

import array as arr


a = arr.array('i', [2, 4, 6, 8])
print("First element:", a[0])
print("Second element:", a[1])
print("Last element:", a[-1])

42
Array

Code C Type Python Type Min bytes


'b' signed char int 1
'B' unsigned char int 1
'u' Py_UNICODE Unicode 2
'h' signed short int 2
'H' unsigned short int 2
'i' signed int int 2
'I' unsigned int int 2
'l' signed long int 4
'L' unsigned long int 4
'f' float float 4
'd' double float 8

43
Array

import array as arr


numbers_list = [2, 5, 62, 5, 42, 52, 48, 5]
numbers_array = arr.array('i', numbers_list)

print(numbers_array[2:5]) # 3rd to 5th


print(numbers_array[:-5]) # beginning to 4th
print(numbers_array[5:]) # 6th to end
print(numbers_array[:]) # beginning to end

L’output del programma sarà:

array('i', [62, 5, 42])


array('i', [2, 5, 62])
array('i', [52, 48, 5])
array('i', [2, 5, 62, 5, 42, 52, 48, 5])

44
Array: Esempi
>>> a = np.array([[1, 2, 3], [4, 5, 6]], float)
>>> a
array([[ 1., 2., 3.], [ 4., 5., 6.]])

>>> a = np.array([[1, 2, 3], [4, 5, 6]], float)


>>> a[1,:]
array([ 4., 5., 6.])

>>> a[:,2]
array([ 3., 6.])
>>> a[-1:,-2:]
array([[ 5., 6.]])

>>>a = np.array(range(6), float).reshape((2, 3))


>>> a
array([[ 0., 1., 2.], [ 3., 4., 5.]])
>>> np.arange(5, dtype=float)
array([ 0., 1., 2., 3., 4.])
45
Array: Inizializzazione
Gli array possono essere inizializzati in diversi
modi

Uso dei metodi zeros() e ones()

>>> np.ones((2,3), dtype=float)


array([[ 1., 1., 1.], [ 1., 1., 1.]])

>>> np.zeros(7, dtype=int)


array([0, 0, 0, 0, 0, 0, 0])

46
Moltiplicazione tra arrays
Negli array multidimensionali, la moltiplicazione rimane
ancora elemento per elemento

NON È la moltiplicazione matriciale!

Per quella matriciale serve il tipo di dato matrix

>>> a = np.array([[1,2], [3,4]], float)


>>> b = np.array([[2,0], [1,3]], float)
>>> a * b
array([[2., 0.], [3., 12.]])

47
Funzioni standard su array
 Numpy definisce tutta una serie di funzioni
standard
 abs(), sign(), sqrt(), log(), log10(), exp(),

sin(), cos(), tan(), arcsin(), arccos(),


arctan(), sinh(), cosh(), tanh(), arcsinh(),
arccosh(), arctanh() >>> a = np.array([1, 4,
9], float)

>>> np.sqrt(a)
array([ 1., 2., 3.])

48
Python rispetto al Matlab
Vantaggi di usare il MATLAB
• é un software ben assestato
• Simulink non ha reali alternative
• funzioni matematiche molto veloci per matrici e vettori, un
buon debugger e una sintassi che facilita l’analisi numerica:
• parti di un vettore : A(:,5:10) = 33;
• creazione di sequenze: B = [1:3:30];
• concatenazione di vettori: Brepeat = [B, B, B]; C = [B;
B*2; B.*B]
• GUI (Graphical User Interface) tools come SPTool (per
visualizzazione e filtraggio di segnali) or FDATool (per la
progettazione di filtri digitali)
• Progettazione a livello professionale di sitemi di controllo

49
Python rispetto al Matlab
Svantaggi di usare il MATLAB

• il costoso delle licenze individuali o di gruppo è alto


• i toolbox devono essere acquistati a parte
• la sintassi a volte è un po’ insolita:
• La numerazione degli array parte da 1
• Si può scegliere tra un file di script (.m) o una funzione (.m), e
ciò a volte crea confusione: i file di script non possono avere
sottofunzioni e possono modificare l'ambiente globale mentre i
file di funzione possono avere sottofunzioni e non modificare
l'ambiente globale.
• se si dimentica di terminare una riga con un punto e virgola, i
valori della variabile verrano stampati
• ……….

50
Python rispetto al Matlab
Svantaggi di usare il MATLAB

• il costoso delle licenze individuali o di gruppo è alto


• i toolbox devono essere acquistati a parte
• la sintassi a volte è un po’ insolita:
• La numerazione degli array parte da 1
• Si può scegliere tra un file di script (.m) o una funzione (.m), e
ciò a volte crea confusione: i file di script non possono avere
sottofunzioni e possono modificare l'ambiente globale mentre i
file di funzione possono avere sottofunzioni e non modificare
l'ambiente globale.
• se si dimentica di terminare una riga con un punto e virgola, i
valori della variabile verrano stampati
• ……….

51
,
Esercizio

52
Esercizio
import numpy as np
import matplotlib.pyplot as plt

plt.figure(1)
t = np.linspace(-0.02, 0.05, 100)
plt.plot(t, 325*np.sin(2*np.pi*50*t))
plt.xlabel('t')
plt.ylabel('x(t)')
plt.title('Plot of CT signal x(t)=325 sin(2 pi 50 t)')
plt.xlim([-0.02, 0.05])

53

Potrebbero piacerti anche