Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
CHIAVE
La chiave è il valore che permette di identificare univocamente uno ed un solo valore (es. matricola)
Da chiave risalgo a valore, non viceversa.
Nelle liste le chiavi sono gli interi, le posizioni e qualsiasi tentativo di usare altri tipi di dati come indice produce
un errore. I dizionari sono come le liste, ma possono usare come indice anche valori non numerici:
- stringhe
- tuple
- valori numerici
- valori booleani
Ma non possono essere usati tipi come liste, dizionari, strutture di dati complessi che mutano nel tempo.
Da una chiave risalgo al valore corrispondente, non possono esserci duplicazioni di chiavi in un dizionario.
Posso assegnare un valore diverso ad una chiave gia esistente, sovrascrivendo il vecchio valore.
Posso aggiungere nuove coppie chiave-valore:
dizionario = {“chiave1” : “valore1” , “chiave2” : “valore2” }
dizionario[“nuova_chiave”] = ”nuovo_valore”
Lunghezza dizionario = numero di coppie
len(dizionario)
Metodi per i dizionari:
.keys() restituisce la lista delle chiavi contenute nel dizionario
.values() restituisce la lista dei valori contenuti nel dizionario
Oppure posso farlo in un altro modo ciclo for.
CICLO FOR
for elemento in iteratore:
…. lista comandi
Nei dizionari, è utile per stampare a video in maniera immediata i valori:
for parola in diz:
print diz[parola] stampa i valori associati ad ogni chiave
“parola” diventa un insieme contenente tutte le chiavi, ad ogni ciclo parola assume una chiave diversa e viene
visto a video il valore di quella chiave. L’insieme iteratore però non ha un ordinamento, le chiavi, i suoi
elementi non sono ordinabili, a differenza delle liste.
Nei dizionari, per stampare chiavi: Nelle liste, per stampare gli elenti:
dizionario = {“testo”: a , “testo1” : b , “testo2”: c .. } lista = [1, 2, 3, ..]
for elemento in dizionario: for elemento in lista:
print elemento testo testo1 testo2 print elemento 1 2 3 ..
(il ciclo for opera sulle chiavi, non sui valori) Nelle tuple, per stampare gli elementi:
Nelle stringhe, per stampare lettere: tupla = (1, 2, 3, ..)
stringa = “testo” for elemento in tupla:
for elemento in stringa: print elemento 1 2 3 ..
print elemento t e s t o
Tramite il ciclo for, posso costruire un iteratore per eseguire un numero prefissato di iterazioni range()
Lo posso usare per dare valore ad una variabile iterabile = range (start, stop, step)
- start = valore di partenza
- stop = valore massimo (necessario)
- step = incrementi con cui vengono costtruiti gli elementi
Oppure nel ciclo for posso scriverlo così For contatore in range(x):
Significa che ripete il ciclo x volte, e posso usare come variabile quel contatore all’interno del ciclo, viene
implementato da solo.
Es.
Proprietà principali strutture dati:
STRUTTURE DATI MULTIDIMENSIONALI
Liste bidimensionali tabella con tante righe e tante colonne.
Una lista bidimensionale può essere considerata una lista di liste organizzate sequenzialmente:
M[0] = A[0] A[1] A[2] A[3] … A[n-1]
M = A M = M[0] M[1] = B[0] B[1] B[2] B[3] … B[n-1]
B M[1] …
C M[2] M[m-1] = Z[0] Z[1] Z[2] Z[3] … Z[n-1]
D M[3] ovvero:
… …
Z M[m-1] M[0] = M[0][0] M[0][1] M[0][2] M[0][3] … M[0][n-1]
M[1] = M[1][0] M[1][1] M[1][2] M[1][3] … M[1][n-1]
…
M[m-1] = M[m-1][0] M[m-1][1] … M[m-1][n-1]
Il primo valore M[0][0] è il valore della riga, il secondo M[0][0] è delle colonne.
M[i][j] : riga i , colonna j
Somma per ogni colonna di una riga = M[0][0] + M[0][1] + M[0][2] + M[0][3] + …
Somma per ogni colonna di ciascuna riga = M[0][0] + M[0][1] + M[0][2] + M[0][3] + …
= M[1][0] + M[1][1] + M[1][2] + M[1][3] + …
= M[2][0] + M[2][1] + M[2][2] + M[2][3] + …
…
Somma per ogni riga di una colonna = M[0][0] + M[1][0] + M[2][0] + M[3][0] + …
Somma per ogni riga di ciascuna colonna = M[0][0] + M[1][0] + M[2][0] + M[3][0] + …
= M[0][1] + M[1][1] + M[2][1] + M[3][1] + …
= M[0][2] + M[1][2] + M[2][2] + M[3][2] + …
…
Posso fare sia lista di liste, che lista di tuple, che dizionari di tuple
FUNZIONI
La funzione può essere vista come un nome attribuito ad un insieme di istruzioni:
- codice (insieme di istruzioni) indipendente dalla parte rimanente del programma
- filosofia: scrivi il codice di una funzione una volta, riutilizzalo più volte
Caratteristiche di una funzione:
- esegue un compito specifico
- la funzione può essere chiamata (invocata, attivata) in diversi punti del programma di cui fa parte come se
fosse una singola istruzione
Vantaggi delle funzioni
Attraverso il riutilizzo, facilitano la scrittura del codice:
- all’interno di uno script aiutano a ridurre la duplicazione del codice
- E’ possibile riutilizzare una funzione in uno script diverso da quello in cui (la funzione) è stata scritta
- E’ possibile utilizzare funzioni già scritte da altri, senza conoscerne l’implementazione
Migliorano :
- la comprensione del codice
- l’organizzazione
- le operazioni di manutenzione ed evoluzione
Output Parametri (in input)
Funzione
Una funzione in Python
- può essere chiamata ad operare più volte su dati diversi
- può restituire o non restituire un risultato
Le funzioni possono essere composte:
COME CREARE UNA FUNZIONE
La creazione di nuove funzioni è una fra le peculiarità più utili di un linguaggio di programmazione
Può essere usato qualsiasi nome per una funzione, fatta eccezione per le parole riservate di Python
Una funzione deve essere definita prima di essere usata.
La sintassi per la definizione di una funzione in python è:
Le funzioni possono essere definite in qualsiasi punto del programma.
Unica condizione: una funzione deve essere definita prima di poter essere usata.
Per evitare problemi di questo tipo conviene dichiarare tutte le funzioni all’inizio del file.
Quando definisco una funzione non conosco a priori i valori sui quali dovrà operare PARAMETRI.
Parametri formali = nella definizione uso i parametri formali per dare un nome ai dati che ancora non conosco
Parametri attuali = valori reali collegati ai parametri formali.
E’ possibile dichiarare delle variabili all’interno delle funzioni.
Al termine della funzione, le variabili dichiarate internamente (per es. risultato) cessano di esistere
E’ opportuno dare alle variabili, dichiarate nelle funzioni, nomi diversi dai nomi delle variabili dichiarate nel
corpo principale del programma.
IMPORTARE ED UTILIZZARE UNA FUNZIONE DALL’ESTERNO
Modulo: un file .py con all’interno una collezione di funzioni pronte per l’uso.
Package: un insieme di moduli che collaborano tra loro per svolgere compiti complessi.
E’ una directory contenente uno o più moduli. La directory di un package deve avere un file
particolare: __init__.py per evitare che una directory contenente alcuni script .py venga
scambiata per un package.
Per poter utilizzare le funzioni di un modulo dobbiamo dire all’interprete di caricare il
modulo in memoria. Questa operazione viene chiamata importazione.
Importare un modulo (presente nella dir. corrente)
Localizzazione di moduli nel file system
Inizia una ricerca in diverse directory, secondo l’ordine descritto qui di seguito. Non appena viene trovato un
file itamat.py, la ricerca termina.
- directory di lavoro corrente (nel ns caso, la directory in cui si trova il file esempiouso.py)
- directory in cui si trovano i moduli e i package della libreria standard di python
Libreria di Python
Il programma di installazione di python, oltre ad installare l’interprete, installa anche la libreria standard di
python, un insieme di package e moduli (pronti per essere utilizzati), ognuno dedicato ad un compito specifico.
La libreria standard di Python è molto estesa: - operazioni matematiche
- gestione di oggetti grafici
- operazioni sul file system
Se vogliamo un modulo non presente nella libreria standard, basta recuperarlo e installarlo nel computer.
Importare un modulo della libreria standard
I moduli della libreria standard possono essere importati anche se non risiedono nella directory di lavoro
corrente. Per utilizzare una funzione di un modulo dobbiamo specificare il nome del modulo che la contiene e
il nome della funzione separati da un punto. Questo formato è chiamato notazione punto.
Es.
Nella documentazione ufficiale del linguaggio python, oltre alla sintassi del linguaggio vengono descritti in
dettaglio i contenuti della liberia standard. Una modifica alla libreria standard determina una variazione
della versione di python.
Package Manager
In aggiunta alla libreria standard, è possibile installare dei pacchetti aggiuntivi: ( Conda)
- Posso usare un modulo o un package copiandolo nella mia directory di lavoro corrente. In questo modulo,
però altri utenti non riuscirebbero ad utilizzarlo.
- L’installazione manuale di un pacchetto nel computer (tutti gli utenti) può essere un’operazione complicata.
- Per questo motivo sono stati introdotti i Package Manager.
Il package manager è un software che si occupa di installare pacchetti aggiuntivi, rendendoli disponibili per
tutti gli utenti di uno specifico computer.
Molti dei package manager esistenti, scaricano pacchetti da fonti accessibili via internet:
- Esistono diverse fonti di pacchetti aggiuntivi (sia liberamente scaricabili, sia a pagamento).
- Una delle più grandi fonti di pacchetti python scaricabili è il Python Package Index. ://pypi.python.org/pypi
- Il contenuto della libreria e il tipo di package manager costituisce la maggior differenza tra le diverse
distribuzioni del linguaggio python.
PARAMETRI DI FUNZIONI
Parametri - Formali
- Attuali
Definizione di funzione
Modalità di passaggio dei parametri
Quando si richiama una funzione, vengono trasferiti i valori dai parametri attuali ai parametri formali della
funzione. Il passaggio di parametri può avvenire in due modalità distinte:
● Passaggio per valore (o per copia): il parametro formale è una copia del parametro attuale se la funzione
modifica il contenuto del parametro formale, si modifica la copia e non l’originale
● Passaggio per riferimento: il parametro formale è collegato direttamente al parametro attuale modificando il
valore del parametro formale si altera anche il valore del parametro attuale
La differenza si nota quando, all’interno di una funzione, viene modificato un parametro formale
● (nel passaggio per valore) il corrispondente