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