Download Programmazione in Python

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
Programmazione in Python
Prof. Pasquale De Michele (Gruppo 1)
Prof. Raffaele Farina (Gruppo 2)
Prof. Raffaele Farina (Gruppo 1)
Prof. Pasquale De Michele (Gruppo 2)
Programmazione in Python
Precisazione
Le slide fanno riferimento alla versione di
Python 2.7.
Da Python 3 in poi, sono state introdotte
diverse novità, che vengono comunque messe
in evidenza in queste slide rispetto alla
versione 2.7.
Prof. Raffaele Farina (Gruppo 1)
Prof. Pasquale De Michele (Gruppo 2)
Programmazione in Python
Primo programma in Python
Hello world!:
print “Hello world!”
Aggiungere commenti al codice:
#Questo e’ un commento!
print “Hello world!”
L’istruzione print può essere fatta anche in un
altro modo (usando ‘):
print ‘L\’altezza e’ mezza bellezza’
ATTENZIONE: per evitare errori, sia nei commenti, sia nelle stampe, non
usare mai caratteri accentati come:
è, é, à, ù, ò, ì.
Prof. Raffaele Farina (Gruppo 1)
Prof. Pasquale De Michele (Gruppo 2)
Programmazione in Python
print in Python 3
Dalla versione 3 di Python l’istruzione print
richiede l’uso delle parentesi tonde.
Di conseguenza, il programma visto nella
precedente slide, per essere eseguito
correttamente in Python 3 richiede di essere
scritto come segue:
print (“Hello world!”)
Prof. Raffaele Farina (Gruppo 1)
Prof. Pasquale De Michele (Gruppo 2)
Programmazione in Python
Un programma un po’ più complesso
Calcolo dell’area del triangolo rettangolo:
Tipi di istruzioni utilizzate:
print – per la stampa a video (output);
input – per la lettura da video (input);
a = b*h/2 – per assegnare un valore alla variabile a.
Prof. Raffaele Farina (Gruppo 1)
Prof. Pasquale De Michele (Gruppo 2)
Programmazione in Python
Un po’ di ripasso: la memoria principale
I programmi, quando sono in esecuzione,
risiedono nella memoria principale (RAM).
Insieme ai programmi, nella memoria principale
risiedono anche tutti i dati che essi manipolano.
La memoria RAM è organizzata in indirizzi del tipo:
0000000…000
0000000…001
…
1111111…111
Prof. Raffaele Farina (Gruppo 1)
Prof. Pasquale De Michele (Gruppo 2)
Programmazione in Python
Un po’ di ripasso: la memoria principale
Di conseguenza, possiamo immaginare che se un programma chiede
ad un utente di inserire due numeri per poterne calcolare un terzo,
ognuno di questi sarà associato ad un indirizzo.
Riprendiamo il programma del triangolo rettangolo.
Il programma chiede all’utente di inserire la base e l’altezza, al fine di
poter calcolare l’area.
Supponiamo che l’utente inserisca 4 per la base e 5 per l’altezza. Di
conseguenza l’area sarà 10.
Dove vengono memorizzati questi dati?
Potrebbe capitare che:
• All’indirizzo 0000000…000 sia salvato 4;
• All’indirizzo 0000000…001 sia salvato 5;
• All’indirizzo 0000000…010 sia salvato 10;
Prof. Raffaele Farina (Gruppo 1)
Prof. Pasquale De Michele (Gruppo 2)
Programmazione in Python
Variabili e costanti
Problema: per il programmatore può essere complicato
dover ricordare l’indirizzo specifico in cui è stato salvato
ciascun dato.
D’altra parte, nella vita di tutti i giorni possiamo trovare
esempi che semplificano questa problematica:
La rubrica telefonica.
La rubrica telefonica mantiene le associazioni
tra numeri di telefono e i nomi delle persone
a cui tali numeri di telefono corrispondono.
Allo stesso modo, possiamo pensare di associare
un nome a ciascun dato utilizzato nel programma.
A seconda del fatto che questi dati possano o
meno essere modificati, distingueremo variabili
e costanti.
Prof. Raffaele Farina (Gruppo 1)
Prof. Pasquale De Michele (Gruppo 2)
Programmazione in Python
Variabili e costanti
Se un dato non deve mai essere modificato (il valore ad esso
associato non cambia), allora definiremo una costante.
Esempio: PI_GRECO = 3.14
N.B.: le costanti possono essere definite solo dal
programmatore all’interno del codice del programma;
l’utente non potrà inserire nessuna costante.
Se, invece, un dato può essere modificato (deve essere
calcolato, inserito dall’utente o cambiato in corso d’opera il
suo valore, allora definiremo una variabile.
Esempio:
• b per la base;
• h per l’altezza;
• a per l’area.
Prof. Raffaele Farina (Gruppo 1)
Prof. Pasquale De Michele (Gruppo 2)
Programmazione in Python
Tipi di variabili
Le variabili possono essere di vario tipo.
Possiamo distinguere tra variabili semplici e variabili
complesse.
Le variabili semplici sono messe a disposizione dal linguaggio
di programmazione. Nel caso del Python sono:
Variabili intere (che possono contenere numeri interi):
• a = -3
Variabili reali (che possono contenere numeri reali):
• b = -7.4
Variabili stringhe (sequenze di caratteri alfa-numerici)
• c = “N76000000”
Prof. Raffaele Farina (Gruppo 1)
Prof. Pasquale De Michele (Gruppo 2)
Programmazione in Python
Tipi di variabili
Un esempio di variabili complesse sono gli array.
Un array raggruppa, mediante un unico nome, un
insieme omogeneo (dello stesso tipo di variabili).
Esempio: a = [1, 2, 3, 4]
Per accedere ad un singolo dato contenuto in un array si
fa riferimento alla sua posizione (partendo dalla prima
posizione 0). Di conseguenza:
In a[0] avremo 1.
In a[1] avremo 2.
In a[2] avremo 3.
In a[3] avremo 4.
Prof. Raffaele Farina (Gruppo 1)
Prof. Pasquale De Michele (Gruppo 2)
Programmazione in Python
Lettura con input() in Python 2.7 e 3.4
Per leggere un dato inserito dall’utente in Python su utilizza
l’istruzione input().
Esempio: a = input(“Inserire a”)
In Python 2.7, tale istruzione assegna alla variabile il tipo inserito:
Se si inserisce “3”, allora a è di tipo intero.
Se si inserisce “3.0”, allora a è di tipo reale.
Se si inserisce “Ciao”, allora a è di tipo stringa.
In Python 3.4, tale istruzione assegna alla variabile sempre il tipo
stringa. Di conseguenza è necessaria una conversione, affinché si
possa gestire il tipo di variabile desiderata:
Se si desidera un intero, aggiungere a = int(a)
Se si desidera un reale, aggiungere a = float(a)
La cosa può essere utile anche in Python 2.7, quando si desidera che
le variabili siano sempre dello stesso tipo, ad esempio reale. Di
conseguenza, anche se si inserisse “3”, con la conversione, la
variabile a diventerebbe di tipo reale.
Prof. Raffaele Farina (Gruppo 1)
Prof. Pasquale De Michele (Gruppo 2)
Programmazione in Python
Costrutto condizionale (di selezione) IF - ELSE
Talvolta può essere utile valutare il contenuto
di una o più variabili al fine di poter stabilire
quale sequenza di istruzioni svolgere a seconda
dei casi.
Prof. Raffaele Farina (Gruppo 1)
Prof. Pasquale De Michele (Gruppo 2)
Programmazione in Python
Costrutto condizionale (di selezione) IF - ELSE
Vediamo un esempio concreto:
Vogliamo valutare se il valore contenuto nella
variabile a sia maggiore di 0 oppure no.
ATTENZIONE – Regole di indentazione:
Le istruzioni interne all’IF devono essere spostate di almeno uno
spazio (o carattere di tabulazione) verso destra rispetto all’IF.
Lo stesso vale per l’ELSE.
Prof. Raffaele Farina (Gruppo 1)
Prof. Pasquale De Michele (Gruppo 2)
Programmazione in Python
Costrutto condizionale (di selezione) IF - ELSE
Nell’esempio precedente abbiamo valutato due condizioni:
a > 0 e la sua negazione (else) a <= 0.
Come potremmo gestire più di due condizioni da controllare?
Consideriamo un altro esempio:
Vogliamo valutare se il valore contenuto nella variabile a sia maggiore,
minore o uguale rispetto a 0 (3 condizioni).
Prof. Raffaele Farina (Gruppo 1)
Prof. Pasquale De Michele (Gruppo 2)
Programmazione in Python
Costrutto condizionale (di selezione) IF - ELSE
Nell’esempio precedente abbiamo valutato tre
condizioni:
a > 0 (if)
a < 0 (elif)
a = 0 (else) come negazione delle due
precedenti.
Prof. Raffaele Farina (Gruppo 1)
Prof. Pasquale De Michele (Gruppo 2)
Programmazione in Python
Costrutti iterativi FOR e WHILE
Un’altra situazione tipica per un
programmatore è avere a che fare con
istruzioni che si ripetono più volte.
In questo caso possiamo utilizzare due costrutti
che ci permettono di ripetere una sequenza di
istruzioni per un certo numero fissato di volte o
finché risulta vera una certa condizione.
Prof. Raffaele Farina (Gruppo 1)
Prof. Pasquale De Michele (Gruppo 2)
Programmazione in Python
Il ciclo FOR
Un esempio del costrutto FOR in Python:
In questo caso abbiamo un gruppo di istruzioni che deve essere
ripetuto N = 10 volte.
Di conseguenza abbiamo fissato intervallo [1, 10] in cui variare.
Tale intervallo viene espresso attraverso l’istruzione range(1,
N+1) che permette all’indice i di variare tra 1 ed N (escluso
l’estremo superiore N+1).
Prof. Raffaele Farina (Gruppo 1)
Prof. Pasquale De Michele (Gruppo 2)
Programmazione in Python
Il ciclo FOR
Esempio: leggere 10 numeri e per ogni numero
inserito stamparne il doppio.
ATTENZIONE – Regole di indentazione:
Le istruzioni interne al FOR devono essere spostate di almeno uno
spazio (o carattere di tabulazione) verso destra rispetto al FOR.
Tutto ciò che viene scritto “allineato” col FOR (o verso sinistra) viene
considerato non appartenente al ciclo FOR.
Prof. Raffaele Farina (Gruppo 1)
Prof. Pasquale De Michele (Gruppo 2)
Programmazione in Python
Il ciclo WHILE
Un esempio del costrutto WHILE in Python:
In questo caso abbiamo un gruppo di istruzioni che deve
essere ripetuto finché risulta soddisfatta una certa
condizione.
Di conseguenza, non sappiamo precisamente quante volte
dovremo ripetere la sequenza di istruzioni contenuta nel
ciclo WHILE.
Prof. Raffaele Farina (Gruppo 1)
Prof. Pasquale De Michele (Gruppo 2)
Programmazione in Python
Il ciclo WHILE
Esempio: leggere i numeri inseriti dall’utente
finché non viene inserito il numero 0.
ATTENZIONE – Regole di indentazione:
Valgono le stesse regole di indentazione del ciclo FOR.
Prof. Raffaele Farina (Gruppo 1)
Prof. Pasquale De Michele (Gruppo 2)
Programmazione in Python
Il ciclo WHILE
D’altra parte, ciò che può essere fatto con un ciclo FOR
può essere tranquillamente fatto con un ciclo WHILE.
Di conseguenza consideriamo il precedente programma
scritto per il ciclo FOR e vediamo come implementarlo
con il ciclo WHILE.
Prof. Raffaele Farina (Gruppo 1)
Prof. Pasquale De Michele (Gruppo 2)
Programmazione in Python
Il ciclo WHILE
Consideriamo un esempio leggermente diverso: leggere 10
numeri e per ogni numero inserito stamparne il doppio; se
l’utente inserisce il numero 0 il programma termina prima.
Prof. Raffaele Farina (Gruppo 1)
Prof. Pasquale De Michele (Gruppo 2)
Programmazione in Python
Valutazione delle condizioni
Sia il costrutto IF, sia i costrutti FOR e WHILE valutano delle condizioni che possono
essere VERE o FALSE.
Di conseguenza ci si rifà alla logica booleana per stabilire se una o più condizioni
sono vere o false.
In particolare, nel caso dell’IF e del WHILE può capitare che debbano essere valutate
più condizioni contemporaneamente che possono quindi essere combinate in AND
ed OR logici.
Come si è già visto per l’esempio precedente, Python utilizza l’espressione
c1 and c2 per valutare due condizioni in AND.
Di conseguenza è facile immaginare che per l’OR logico l’espressione sarà
c1 or c2.
Per combinazioni più complesse è possibile utilizzare le parentesi tonde al fine di
stabilire l’ordine di valutazione.
Esempio:
(c1 or c2) and (c3 or c4)
Prof. Raffaele Farina (Gruppo 1)
Prof. Pasquale De Michele (Gruppo 2)
Programmazione in Python
Gestire più variabili dello stesso tipo: array
Vogliamo scrivere un programma che legga 5
variabili di tipo intero e ne restituisca la
sommatoria. Inoltre se la sommatoria è pari le
variabili pari inizialmente inserite devono
essere poste a 0.
In questo caso è necessario memorizzare tutti i
dati inseriti.
Prof. Raffaele Farina (Gruppo 1)
Prof. Pasquale De Michele (Gruppo 2)
Programmazione in Python
Gestire più variabili dello stesso tipo: array
Prima soluzione: usare 5 variabili diverse.
Prof. Raffaele Farina (Gruppo 1)
Prof. Pasquale De Michele (Gruppo 2)
Programmazione in Python
Gestire più variabili dello stesso tipo: array
Seconda soluzione (migliore): usare 1 array di 5
elementi.
Prof. Raffaele Farina (Gruppo 1)
Prof. Pasquale De Michele (Gruppo 2)
Programmazione in Python
Array: inizializzazione
Esistono vari modi per inizializzare un array in
Python, tutti validi.
Inizializziamo a 0 tre array n1, n2 ed n3 da 15
elementi:
n1 = [0] * 15 #Come nell’esempio
appena visto
n2 = [0 for i in range(15)]
import numpy as np
n3 = np.zeros(15)
Prof. Raffaele Farina (Gruppo 1)
Prof. Pasquale De Michele (Gruppo 2)
Programmazione in Python
Librerie e funzioni
L’ultima modalità di inizializzazione di un array ricorre ad una
funzione (zeros()) definita nella libreria numpy di Python.
La libreria numpy richiede di essere scaricata.
Le funzioni possono essere viste come parti di programmi già scritte
che prendono in input dei parametri per restituire un risultato.
Le librerie contengono funzioni già scritte che semplificano la vita del
programmatore.
Esempi di librerie Python oltre a numpy:
math è la libreria delle funzioni matematiche:
• a = math.pow(b, e): la funzione potenza (pow()) assegna ad a il
risultato dell’elevamento alla potenza e della base b.
• y = math.sqrt(x): la funzione radice quadrata (sqrt()) assegna a y il
risultato della radice quadrata di x.
matplotlib.pyplot è una libreria per la creazione dei grafici.
Prof. Raffaele Farina (Gruppo 1)
Prof. Pasquale De Michele (Gruppo 2)
Programmazione in Python
Scaricare librerie per Python 2.7 e 3.4
Python 2.7 per Mac:
Python 3.4 per Mac:
numpy: Link
matplotlib: Link
numpy: Link
matplotlib: Link
Python 2.7 per
Windows 64 bit
numpy: Link
matplotlib: Link
Python 2.7 per
Windows 32 bit
numpy: Link
matplotlib: Link
Prof. Raffaele Farina (Gruppo 1)
Prof. Pasquale De Michele (Gruppo 2)
Python 3.4 per
Windows 64 bit
numpy: Link
matplotlib: Link
Python 3.4 per
Windows 32 bit
numpy: Link
matplotlib: Link
Programmazione in Python
Installare la libreria numpy
Per Mac e Windows, seguire l’installazione grafica.
Per Linux
con distribuzioni Debian/Ubuntu:
1.
2.
3.
Aprire il terminale e digitare
sudo apt-get install python-numpy (premi INVIO)
Inserire la password (non compaiono pallini ma state scrivendo
ugualmente), premere INVIO.
Attendere la fine dell’installazione.
con distribuzioni Fedora/RedHat:
1.
2.
3.
Aprire il terminale e digitare
sudo yum install python-numpy (premi INVIO)
Inserire la password (non compaiono pallini ma state scrivendo
ugualmente), premere INVIO.
Attendere la fine dell’installazione.
Prof. Raffaele Farina (Gruppo 1)
Prof. Pasquale De Michele (Gruppo 2)
Programmazione in Python
Installare la libreria matplotlib
•
•
Per utenti Windows, seguire l’installazione grafica.
Per utenti Mac, dopo aver scaricato il file matplotlib
relativo alla vostra versione di Python:
1.
2.
3.
Aprire il terminale e digitare
sudo pip3 install wheel (premi INVIO).
Vi verrà richiesta la vostra password, quindi digitatela.
Finita questa installazione, spostatevi nella cartella Downloads
digitando nel terminale:
cd Downloads (premi INVIO)
a.
b.
Per Python 2.7 digitare (vi verrà richiesta la vostra password)
sudo pip3 install matplotlib-1.4.2-cp27-nonemacosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x
86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl
(premi INVIO).
Per Python 3.4 digitare (vi verrà richiesta la vostra password)
sudo pip3 install matplotlib-1.4.2-cp33-cp33mmacosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x
86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl
(premi INVIO).
Prof. Raffaele Farina (Gruppo 1)
Prof. Pasquale De Michele (Gruppo 2)
Programmazione in Python
Installare la libreria matplotlib
Per utenti Linux
con distribuzioni Debian/Ubuntu:
1. Aprire il terminale e digitare
sudo apt-get install python-matplotlib
(premi INVIO)
2. Inserire la password (non compaiono pallini ma state
scrivendo ugualmente), premere INVIO.
3. Attendere la fine dell’installazione.
con distribuzioni Fedora/RedHat:
1. Aprire il terminale e digitare
sudo yum install python-matplotlib (premi
INVIO)
2. Inserire la password (non compaiono pallini ma state
scrivendo ugualmente), premere INVIO.
3. Attendere la fine dell’installazione.
Prof. Raffaele Farina (Gruppo 1)
Prof. Pasquale De Michele (Gruppo 2)
Programmazione in Python
Importare librerie in Python
Per usare le funzioni definite in determinate librerie di Python è necessario
importare tali librerie nel programma.
La sintassi è la seguente: import nome_libreria
Talvolta, per abbreviare il nome della libreria si definisce un alias tramite la
parola chiava as dopo il nome della libreria, seguita dall’alias: import
nome_libreria as alias
Vediamo alcuni esempi:
import math as m
import numpy as np
import matplotlib.pyplot as plt
In questo modo, se volessimo utilizzare la funzione pow() della liberia
math, potremmo scrivere direttamente m.pow() anziché math.pow().
Prof. Raffaele Farina (Gruppo 1)
Prof. Pasquale De Michele (Gruppo 2)
Programmazione in Python
Grafici in Python
Supponiamo di voler rappresentare graficamente (in un sistema di
assi cartesiani) i valori contenuti in un array a di N elementi.
Immaginiamo che i valori contenuti nell’array siano quelli relativi
all’asse y ed i valori che indicano le posizioni in cui si trovano tali
valori (da 0 ad N-1) siano relativi all’asse x.
Prof. Raffaele Farina (Gruppo 1)
Prof. Pasquale De Michele (Gruppo 2)
Programmazione in Python