Programmazione&in&Python& - afs.enea.it ·...
Transcript of Programmazione&in&Python& - afs.enea.it ·...
Prof. Raffaele Farina (Gruppo 1) Prof. Pasquale De Michele (Gruppo 2)
Programmazione in Python Prof. Pasquale De Michele (Gruppo 1)
Prof. Raffaele Farina (Gruppo 2)
Programmazione in Python
Prof. Raffaele Farina (Gruppo 1) Prof. Pasquale De Michele (Gruppo 2)
! Le slide fanno riferimento alla versione di Python 2.7.
! Da Python 3 in poi, sono state introdoGe diverse novità, che vengono comunque messe in evidenza in queste slide rispeGo alla versione 2.7.
Precisazione
Programmazione in Python
Prof. Raffaele Farina (Gruppo 1) Prof. Pasquale De Michele (Gruppo 2)
! Hello world!:
Primo programma in Python
Programmazione in Python
print “Hello world!”
! Aggiungere commenN al codice:
#Questo e’ un commento! print “Hello world!”
! L’istruzione print può essere faGa anche in un altro modo (usando ‘): print ‘L\’altezza e’ mezza bellezza’
! ATTENZIONE: per evitare errori, sia nei commenN, sia nelle stampe, non usare mai caraGeri accentaN come: ! è, é, à, ù, ò, ì.
Prof. Raffaele Farina (Gruppo 1) Prof. Pasquale De Michele (Gruppo 2)
! 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 correGamente in Python 3 richiede di essere scriGo come segue:
print in Python 3
Programmazione in Python
print (“Hello world!”)
Prof. Raffaele Farina (Gruppo 1) Prof. Pasquale De Michele (Gruppo 2)
! Calcolo dell’area del triangolo reGangolo:
Un programma un po’ più complesso
Programmazione in Python
! Tipi di istruzioni uNlizzate: ! print – per la stampa a video (output); ! input – per la leGura 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)
! I programmi, quando sono in esecuzione, risiedono nella memoria principale (RAM).
! Insieme ai programmi, nella memoria principale risiedono anche tua i daN che essi manipolano.
! La memoria RAM è organizzata in indirizzi del Npo: ! 0000000…000 ! 0000000…001 ! … ! 1111111…111
Un po’ di ripasso: la memoria principale
Programmazione in Python
Prof. Raffaele Farina (Gruppo 1) Prof. Pasquale De Michele (Gruppo 2)
! Di conseguenza, possiamo immaginare che se un programma chiede ad un utente di inserire due numeri per poterne calcolare un terzo, ognuno di quesN sarà associato ad un indirizzo.
! Riprendiamo il programma del triangolo reGangolo. ! 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 memorizzaN quesN daN? ! Potrebbe capitare che:
• All’indirizzo 0000000…000 sia salvato 4; • All’indirizzo 0000000…001 sia salvato 5; • All’indirizzo 0000000…010 sia salvato 10;
Un po’ di ripasso: la memoria principale
Programmazione in Python
Prof. Raffaele Farina (Gruppo 1) Prof. Pasquale De Michele (Gruppo 2)
! Problema: per il programmatore può essere complicato dover ricordare l’indirizzo specifico in cui è stato salvato ciascun dato.
! D’altra parte, nella vita di tua i giorni possiamo trovare esempi che semplificano questa problemaNca: ! La rubrica telefonica.
Variabili e costanN
Programmazione in Python
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)
! 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 costanN 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.
Variabili e costanN
Programmazione in Python
Prof. Raffaele Farina (Gruppo 1) Prof. Pasquale De Michele (Gruppo 2)
! Le variabili possono essere di vario Npo.
! Possiamo disNnguere 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 caraGeri alfa-‐numerici)
• c = “N76000000”
Tipi di variabili
Programmazione in Python
Prof. Raffaele Farina (Gruppo 1) Prof. Pasquale De Michele (Gruppo 2)
! Un esempio di variabili complesse sono gli array.
! Un array raggruppa, mediante un unico nome, un insieme omogeneo (dello stesso Npo 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.
Tipi di variabili
Programmazione in Python
Prof. Raffaele Farina (Gruppo 1) Prof. Pasquale De Michele (Gruppo 2)
! Per leggere un dato inserito dall’utente in Python su uNlizza l’istruzione input().
! Esempio: a = input(“Inserire a”) ! In Python 2.7, tale istruzione assegna alla variabile il Npo inserito:
! Se si inserisce “3”, allora a è di Npo intero. ! Se si inserisce “3.0”, allora a è di Npo reale. ! Se si inserisce “Ciao”, allora a è di Npo stringa.
! In Python 3.4, tale istruzione assegna alla variabile sempre il Npo stringa. Di conseguenza è necessaria una conversione, affinché si possa gesNre il Npo 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 uNle anche in Python 2.7, quando si desidera che le variabili siano sempre dello stesso Npo, ad esempio reale. Di conseguenza, anche se si inserisse “3”, con la conversione, la variabile a diventerebbe di Npo reale.
LeGura con input() in Python 2.7 e 3.4
Programmazione in Python
Prof. Raffaele Farina (Gruppo 1) Prof. Pasquale De Michele (Gruppo 2)
! Talvolta può essere uNle valutare il contenuto di una o più variabili al fine di poter stabilire quale sequenza di istruzioni svolgere a seconda dei casi.
CostruGo condizionale (di selezione) IF -‐ ELSE
Programmazione in Python
Prof. Raffaele Farina (Gruppo 1) Prof. Pasquale De Michele (Gruppo 2)
! Vediamo un esempio concreto: ! Vogliamo valutare se il valore contenuto nella variabile a sia maggiore di 0 oppure no.
CostruGo condizionale (di selezione) IF -‐ ELSE
Programmazione in Python
! ATTENZIONE – Regole di indentazione: ! Le istruzioni interne all’IF devono essere spostate di almeno uno spazio (o caraGere di tabulazione) verso destra rispeGo all’IF.
! Lo stesso vale per l’ELSE.
Prof. Raffaele Farina (Gruppo 1) Prof. Pasquale De Michele (Gruppo 2)
! Nell’esempio precedente abbiamo valutato due condizioni: ! a > 0 e la sua negazione (else) a <= 0.
! Come potremmo gesNre più di due condizioni da controllare? ! Consideriamo un altro esempio:
! Vogliamo valutare se il valore contenuto nella variabile a sia maggiore, minore o uguale rispeGo a 0 (3 condizioni).
CostruGo condizionale (di selezione) IF -‐ ELSE
Programmazione in Python
Prof. Raffaele Farina (Gruppo 1) Prof. Pasquale De Michele (Gruppo 2)
! Nell’esempio precedente abbiamo valutato tre condizioni: ! a > 0 (if) ! a < 0 (elif) ! a = 0 (else) come negazione delle due precedenN.
CostruGo condizionale (di selezione) IF -‐ ELSE
Programmazione in Python
Prof. Raffaele Farina (Gruppo 1) Prof. Pasquale De Michele (Gruppo 2)
! Un’altra situazione Npica per un programmatore è avere a che fare con istruzioni che si ripetono più volte.
! In questo caso possiamo uNlizzare due costrua che ci permeGono di ripetere una sequenza di istruzioni per un certo numero fissato di volte o finché risulta vera una certa condizione.
Costrua iteraNvi FOR e WHILE
Programmazione in Python
Prof. Raffaele Farina (Gruppo 1) Prof. Pasquale De Michele (Gruppo 2)
! Un esempio del costruGo FOR in Python:
Il ciclo FOR
Programmazione 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 aGraverso l’istruzione range(1, N+1) che permeGe 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)
! Esempio: leggere 10 numeri e per ogni numero inserito stamparne il doppio.
Il ciclo FOR
Programmazione in Python
! ATTENZIONE – Regole di indentazione: ! Le istruzioni interne al FOR devono essere spostate di almeno uno
spazio (o caraGere di tabulazione) verso destra rispeGo al FOR. ! TuGo ciò che viene scriGo “allineato” col FOR (o verso sinistra) viene
considerato non appartenente al ciclo FOR.
Prof. Raffaele Farina (Gruppo 1) Prof. Pasquale De Michele (Gruppo 2)
! Un esempio del costruGo WHILE in Python:
Il ciclo WHILE
Programmazione in Python
! In questo caso abbiamo un gruppo di istruzioni che deve essere ripetuto finché risulta soddisfaGa 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)
! Esempio: leggere i numeri inseriN dall’utente finché non viene inserito il numero 0.
Il ciclo WHILE
Programmazione in Python
! ATTENZIONE – Regole di indentazione: ! Valgono le stesse regole di indentazione del ciclo FOR.
Prof. Raffaele Farina (Gruppo 1) Prof. Pasquale De Michele (Gruppo 2)
! D’altra parte, ciò che può essere faGo con un ciclo FOR può essere tranquillamente faGo con un ciclo WHILE.
! Di conseguenza consideriamo il precedente programma scriGo per il ciclo FOR e vediamo come implementarlo con il ciclo WHILE.
Il ciclo WHILE
Programmazione in Python
Prof. Raffaele Farina (Gruppo 1) Prof. Pasquale De Michele (Gruppo 2)
! 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.
Il ciclo WHILE
Programmazione in Python
Prof. Raffaele Farina (Gruppo 1) Prof. Pasquale De Michele (Gruppo 2)
! Sia il costruGo IF, sia i costrua 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 parNcolare, 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 uNlizza 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 uNlizzare le parentesi tonde al fine di stabilire l’ordine di valutazione. ! Esempio:
(c1 or c2) and (c3 or c4)
Valutazione delle condizioni
Programmazione in Python
Prof. Raffaele Farina (Gruppo 1) Prof. Pasquale De Michele (Gruppo 2)
! Vogliamo scrivere un programma che legga 5 variabili di Npo intero e ne resNtuisca la sommatoria. Inoltre se la sommatoria è pari le variabili pari inizialmente inserite devono essere poste a 0.
! In questo caso è necessario memorizzare tua i daN inseriN.
GesNre più variabili dello stesso Npo: array
Programmazione in Python
Prof. Raffaele Farina (Gruppo 1) Prof. Pasquale De Michele (Gruppo 2)
! Prima soluzione: usare 5 variabili diverse.
GesNre più variabili dello stesso Npo: array
Programmazione in Python
Prof. Raffaele Farina (Gruppo 1) Prof. Pasquale De Michele (Gruppo 2)
! Seconda soluzione (migliore): usare 1 array di 5 elemenN.
GesNre più variabili dello stesso Npo: array
Programmazione in Python
Prof. Raffaele Farina (Gruppo 1) Prof. Pasquale De Michele (Gruppo 2)
! Esistono vari modi per inizializzare un array in Python, tua validi.
! Inizializziamo a 0 tre array n1, n2 ed n3 da 15 elemenN: ! n1 = [0] * 15 #Come nell’esempio appena visto
! n2 = [0 for i in range(15)]
! import numpy as np n3 = np.zeros(15)
Array: inizializzazione
Programmazione in Python
Prof. Raffaele Farina (Gruppo 1) Prof. Pasquale De Michele (Gruppo 2)
! L’ulNma 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 parN di programmi già scriGe che prendono in input dei parametri per resNtuire un risultato.
! Le librerie contengono funzioni già scriGe che semplificano la vita del programmatore.
! Esempi di librerie Python oltre a numpy: ! math è la libreria delle funzioni matemaNche:
• 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.
Librerie e funzioni
Programmazione in Python
Prof. Raffaele Farina (Gruppo 1) Prof. Pasquale De Michele (Gruppo 2)
! Python 2.7 per Mac: ! 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
Scaricare librerie per Python 2.7 e 3.4
Programmazione in Python
! Python 3.4 per Mac: ! numpy: Link ! matplotlib: Link
! Python 3.4 per Windows 64 bit ! numpy: Link ! matplotlib: Link
! Python 3.4 per Windows 32 bit ! numpy: Link ! matplotlib: Link
Prof. Raffaele Farina (Gruppo 1) Prof. Pasquale De Michele (Gruppo 2)
! Per Mac e Windows, seguire l’installazione grafica. ! Per Linux
! con distribuzioni Debian/Ubuntu: 1. Aprire il terminale e digitare
sudo apt-get install python-numpy (premi INVIO) 2. Inserire la password (non compaiono pallini ma state scrivendo
ugualmente), premere INVIO. 3. AGendere la fine dell’installazione.
! con distribuzioni Fedora/RedHat: 1. Aprire il terminale e digitare
sudo yum install python-numpy (premi INVIO) 2. Inserire la password (non compaiono pallini ma state scrivendo
ugualmente), premere INVIO. 3. AGendere la fine dell’installazione.
Installare la libreria numpy
Programmazione in Python
Prof. Raffaele Farina (Gruppo 1) Prof. Pasquale De Michele (Gruppo 2)
• Per utenN Windows, seguire l’installazione grafica. • Per utenN Mac, dopo aver scaricato il file matplotlib relaNvo alla vostra versione di Python: 1. Aprire il terminale e digitare
sudo pip3 install wheel (premi INVIO). 2. Vi verrà richiesta la vostra password, quindi digitatela. 3. Finita questa installazione, spostatevi nella cartella Downloads
digitando nel terminale: cd Downloads (premi INVIO) a. Per Python 2.7 digitare (vi verrà richiesta la vostra password)
sudo pip3 install matplotlib-1.4.2-cp27-none-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (premi INVIO).
b. Per Python 3.4 digitare (vi verrà richiesta la vostra password) sudo pip3 install matplotlib-1.4.2-cp33-cp33m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (premi INVIO).
Installare la libreria matplotlib
Programmazione in Python
Prof. Raffaele Farina (Gruppo 1) Prof. Pasquale De Michele (Gruppo 2)
! Per utenN 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. AGendere 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. AGendere la fine dell’installazione.
Installare la libreria matplotlib
Programmazione in Python
Prof. Raffaele Farina (Gruppo 1) Prof. Pasquale De Michele (Gruppo 2)
! 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 uNlizzare la funzione pow() della liberia math, potremmo scrivere direGamente m.pow() anziché math.pow().
Importare librerie in Python
Programmazione in Python
Prof. Raffaele Farina (Gruppo 1) Prof. Pasquale De Michele (Gruppo 2)
! Supponiamo di voler rappresentare graficamente (in un sistema di assi cartesiani) i valori contenuN in un array a di N elemenN.
! Immaginiamo che i valori contenuN nell’array siano quelli relaNvi all’asse y ed i valori che indicano le posizioni in cui si trovano tali valori (da 0 ad N-‐1) siano relaNvi all’asse x.
Grafici in Python
Programmazione in Python