mar 24 set: Organizzazione del corso e modalità d'esame. Linguaggi compilati e linguaggi interpretati. Python in modalità interattiva. Espressioni aritmetiche + - * / // % ** . Tipi int e float. creazione e cancellazione di variabili, assegnamenti multipli. Errori.
ven 27 set: funzioni built-in, ad esempio: input, output, int, float round , help, dir, moduli e funzioni di libreria ad esempio in math factorial e sqrt, funzioni definite dall'utente. Parametri, parametri opzionali.
mar 01 ott: i moduli random e time, esempi di funzioni definite dall'utente. Il costrutto if . Differenza di notazione tra funzioni e metodi.
ven 04 ott: operatori relazionali, and or e not. If..else, if.. elif..elif. while, esercizi
mar 08 ott.: il costrutto for, la funzione range, la funzione reversed, le liste, inserimento e cancellazione da liste, funzioni per liste: min , max, sum, len, metodi per liste, append, pop , insert, remove. ncora su funzioni e metodi: il metodo sort e la funzione sorted. Esercizi: una funzione che determina se un numero e primo o meno, una funzione (che non utilizza il metodo sort ne la funzione sorted ) che data una lista restituisce la lista ordinata.
ven 11 ott.: for annidati, esempio: scrivere una funzione che stampi a terminale le tabelline da 1 a 10. Gli alias, la funzione id. Tipi mutabili e tipi immutabili. il metodo copy per le liste. Le sottoliste tramite le slice. Due modi di scorrere una lista: iterando sui suoi elementi o iterando sulle posizioni. Esempio: scrivere una funzione che data una lista la modifica distruttivamente cancellandone gli elementi di tipo intero e restituisce il numero di elementi cancellati.
mar 14 ott: La valutazione "pigra di espressioni booleane da parte di python.
il tipo immutabile stringa. Concatenare due stringhe. Ottenere sottostringhe tramite slice (fette). Metodi di stringhe, ad esempio:
isalpha(), isdigit(), is alnum(), isupper(), ....
upper(), lower(), capitalize()..
strip(), rjust(), ljust()
find(), replace()
trasformare stringhe il liste e liste di stringhe in stringhe, i metodi split() e joint() e le funzioni list() e str()
esercizio: progettare una funzione che data una stringa restituisce il reverse della stringa.
il tipo mutabile insieme. Inserire, cancellare e ricercare in un insieme sono operazioni che hanno tempi di calcolo ridotti rispetto alle analoghe operazioni su liste dove bisogna assicurare l'ordine. Metodi di insiemi, ad esempio
isdisjoint(), issubset()
add(), remove(), pop()
union (&), intersection(|), difference (-)
ven 18 ott: utilizzo del grader all'interno di spyder esempio con una vecchia prova d'esame. I programmi per testare e per calcolare la complessita' ciclomatica dei programmi python
pytest ( i parametri --timeout e --durations)
radon cc ( il parametro -s )
esercizi sugli insiemi: funzione che conta gli elementi distinti presenti in una lista funzione che cancella da una lista i duplicati.
Il tipo immutabile tupla e suoi utilizzi ( ad esempio per freezare tipi mutabili prima di inserirli all'interno di insiemi o per gestire le risposte di funzioni che restituiscono più valori).
mar 22 ott: la funzione sorted e il metodo sort e il parametro opzionale key, le funzioni anonime (le lambda funzioni). Il tipo mutabile dizionaro, le chiavi e gli attributi. Funzioni applicate a dizionari len(), sum() sorted(), max(). Inserire, cancellare, cercare in un dizionario. I metodi values() e items() Esercizi: dato un testo costruire un dizionario avente per chiave i caratteri del testo e per attributi le loro frequenze. dato il dizionario precedente costruire il dizionario inverso dove le chiavi sono le frequenze e gli attributi l'insieme di caratteri che hanno quell'attributo. I tipi immutabili e le chiavi di un dizionario .
ven 25 ott: inizializzare liste con l'operatore * e con le funzioni list e range. La list comprehention. Esempi per creare liste, insiemi e dizionari:
[x**3 for x in range(10)]
[x for x in range(100) if x%5==0 or x%3==0]
['dispari' if x%2 else 'pari' for x in lista1 ] dove lista1 contiene interi
[x[0] if len(x)%2 else x[-1] for x in lista1 if type(x)==str] dove lista1 contiene elementi non necessariamente di tipo stringa
{(x,y) for x in 'aeiou' for y in 'aeiou' if x!=y}
{chr(x):0 for x in range(ord('a'),ord('z')+1)} dopo aver spiegato le due funzioni built in ord() e char()
come python valuta i test if lista:, if stringa; if x+y ecc.ecc.
accenni sull'organizzazione ad albero dello spazio di memoria. Il modulo os con istruzioni per navigare tra le cartelle e come esempi le funzioni listdir() e getcwd()
mar29 ott. Ancora sulla gestione della memoria esterna. L'organizzazione ad albero tramite cartelle altre funzioni messe a disposizione nel modulo os e os.path: isfilee(), isdir, splittext().
la funzione open e i suoi parametri, le variabili di tipo file, i metodi write(), read(), close(). iterare su un file. Il costrutto with.
ven 2 nov. FESTA
mar 5 nov. SOSPENSIONE DELLA DIDATTICA PER PROVA INTERMEDIE
ven 8 nov. SOSPENSIONE DELLA DIDATTICA PER PROVA INTERMEDIE
mar 12 nov: liste di liste per gestire matrici. Esempi di funzioni su matrici: somma di matrici, trasposta di matrice, prodotto di matrici. Rappresentazione di colori tramite tuple (RGB). Lista di liste di tuple per lavorare su immagini. Il modulo immagini: funzione load() che prende da disco una foto in formato png e produce in memoria l'immagine corrispondente in formato lista di liste di tuple. La funzione save() che prende una immagine in formato lista di liste di tuple e la salva su disco in formato png. Esempi di funzioni che lavorano su immagini:
crea(h,w,c) che restituisce un'immagine di dimensione h x w monocromatica di colore c
ruota1(img) che restituisce copia dell'immagine img ruotata rispetto all'asse verticale
ruota2(img) che restituisce copia dell'immagine img dove sono state scambiate righe con colonne
bordo(img, s, c) che restituisce copia dell'immagine img orlata con una cornice di spessore s e colore c
quadrato1(img, y,x, l, col) che restituisce copia img1 dell'immagine img con sopra disegnato un quadtrato di lore col e lato l il cui vertice in alto a sinistra e' img1[y][x]
inverti(img) che restituisce copia img1 dell'immagine img dove i colori originari risultano invertiti ( vale a dire img1[ i][j]=(255- img[i][j][0], 255- img[i][j][1], 255- img[i][j][2] )
grigio(img) che restituisce copia img1 in scala di grigio dell'immagine img (vale a direimg1[i][j]=(c,c,c ) dove c=round(sum(img[i][j])/3)
la cartellina con le funzioni viste a lezione ed il modulo immagini (contenente le funzioni load e save: foto.zip
ven 15 nov. programmazione orientata agli oggetti. Le classi in python:
class come costruttore di oggetti
come creare oggetti una volta definita la classe. Gli attributi degli oggetti da non confondere con gli attributi della classe. L'attributo dict
come definire i metodi di una classe, la convenzione della variabile self.
I metodi dunder 'dunder'
l'inizializzatore __init__()
__str__() utile per stampare
mar 17 nov.
il modulo copy con le funzioni copy() e deepcopy()
Ordinare liste di oggetti, classi e metodi dunder eq, lt
python e le eccezioni. Il costrutto Try: ...except: .... per gestire le eccezioni e per velocizzare programmi.
variabili locali, variabili globali e variabili non locali.
Funzioni ricorsive:
la ricorsione infinita. Il modulo sys, le funzioni sys.getrecursionlimit(), sys.setrecursionlimit()
esempi elementari di funzioni ricorsive: Funzione che data una lista ne stampa gli elementi. Funzione che data una lista ne stampa gli elementi a partire dall'ultimo.
ven 22 nov. differenza tra attributi di classe e attributi di oggetti. Esempi. Esempi di programmi ricorsivi:
scrivere una funzione ricorsiva che data una lista di interi (positivi, negativi o nulli) restituisce la tupla(a,b) dove a è il numero di positivi presenti in lista e b il numero di negativi presenti in lista.
scrivere una funzione ricorsiva che data una stringa restituisce vero o falso a seconda che la stringa sia palindroma o meno
scrivere una funzione ricorsiva che dato un intero non negativo n restituisc euna lista contenente tute le stringhe binarie di n bit .
martedi 26 nov. esercizi ricorsivi:
scrivere una funzione ricorsiva che dato un intero n restituisce la somma delle cifre di n.
scrivere una funzione ricorsiva che data una stringa s di cratteri distinti restituisce la lista con tutte le stringhe che sono permutazione dei caratteri di s.
modificare la funzione ricorsiva precedente in modo che data una stringa s non necessariamente di caratteri distinti restituisce la lista con tutti gli anagrammi di s.
scrivere una funzione ricorsiva che dato l'indirizzo p di una cartella restituisce il numero di file presenti nella cartella e nelle sue sottocartelle.
scrivere una funzione ricorsiva che dato l'indirizzo p di una cartella e una stringa ext restituisce il numeor di file con estenzione ext contenuti nella cartella p e nelle sue sottocartelle.
Alberi binari e definizione dei loro nodi con la classe Nodo.
scrivere una funzione es(n,m) che restituisce la radice di un albero binario casuale con n nodi definiti dalla classe Nodo e con ciascun nodo avente per valore un intero tra 1 e m.
scrivere una funzione che data la radice di un albero binario con nodi della classe Nodo restituisc eil numero di nodi dell'albero.
venerdi 29 nov.
i file json e le funzioni dump() e load()
Esercizi ricorsivi:
ricerca binaria in una lista di interi ordinata. Versione ricorsiva e versione iterativa.
Alberi con numero di figli arbitrario e definizione dei loro nodi con la classe Nodo.
scrivere una funzione es(n,m) che restituisce la radice di un albero casuale con n nodi definiti dalla classe Nodo ( ogni nodo può dunque avere un numero arbitrario di figli) e il valore di ogni nodo è un intero casuale tra 1 e m.
Alberi di gioco e spiegazione sulla traccia dell'HW7.opz ricorsivo
martedi 3 dic.
Esercizi ricorsivi su alberi e non:
funzione che dato n ne calcola il fattoriale
funzine che dato n calcola l'ennesima riga del triangolo di Tartaglia (rappresentta tramite lista)
funzione che data la radice di un albero (rappresentato tramite noti con attributo valore e attributo lista dei figli) ne calcola:
il numero di nodi
il numero di foglie
l'altezza
l'insieme dei valori dei nodi
il dizionario con la frequenza dei valori (nel dizionario ci sono i valori che compaiono nei nodi dell'albero e per ogni valore l'attributo e' il numero di volte che occorre)
il dizionario con la frequenza dei gradi ( nel dizionario sono i gradi che hanno i nodi dell'albero e per ogni grado l'attributo e' il numeor di nodi dell'albero che hanno quel grado)
venerdi 5 dic.
Esercizi su immagini:
funzione che dato l'indirizzo di una immagine .png contenente su sfondo nero linee verticali rosse disgiunte restituisce il numero di queste linee verticali
Esercizi du alberi:
funzione che dato un albero e un intero k restituisce i valori dei nodi che nell'albero si trovano a livello k
funzione che dato un albero ne produce una copia "vera" senza utilizzare le funzioni presenti nel modulo copy
richiami sulla differenza tra le funzioni copy e deepcopy
martedi 10 dic.
Esercizi su immagini:
funzione che dato l'indirizzo di una immagine .png contenente su sfondo nero spezzate (vale a dire sequenze contingue di segmenti orizzontali e verticali) che non si incrociano restituisce il numero di spezzate
Esecrizi su alberi:
funzione che dato un albero cancella da questo tutti i nodi che compaiono nelle liste dei figli dei suoi nodi in posizione dispari.
Esercizi ricorsivi:
dati n dati l'esito di un lancio e' la somma dei valori ottenuti per ciascun dato. Progettare una funzione che dato n restituisca i possibili esiti del lancio d n dadi colorati con diversi colori e per ciascun esito il numero di modi in cui puo' presentarsi. Più precisamente va restituito un dizionario che ha per chiave gli esiti e per attributo il numero di modi in cui puo' presentarsi quell'esito.
progettare una funzione che dato un insieme di stringhe ed un intero k restituisce l'insieme delle stringhe che si possono ottenere concatenando k stringhe dell'insieme iniziale (una stessa stringa puo' essere utilizzata anche piu' volte nella concatenazione)
venerdi 13 dic. SOSPENSIONE DELLA DIDATTICA PER ALLERTA METEO
martedi 17 dic.
Esercizi su stringhe e tuple:
funzione che date due stringhe verifica se una e' ottenuta dalla rotazione dell'altra
funzione che data una stringa produce la lista di tutte le sottostringhe che iniziano e finiscono con uno stesso simbolo. Le stringhe nella lista devono risultare ordinate per per lunghezza crescente e a parità lessicograficamente.
funzione che data una tupla ed un intero k restituisce una lista con tutte le tuple suffisso di lunghezza al più k.
Esercizi du alberi:
progettare una funzione RICORSIVA che data la radice di un albero binario ed una stringa percorso (stringa binaria con S o D a indicare se nel percorso si scende al figlio sinistro o al figlio destro) restituisce None se nell'albero non c'e' un nodo corrispondente a ul percorso, il valore del nodo altrimenti.
progettare una funzione ITERATIVA per il problema al punto precedente.
Esercizi sui file di testo.
progettare una funzione che prende l'indirizzo di un file di testo contenente parole (una per ogni riga del file) e modifica il file sostituendo ciascuna arola con una terna di interi (a,b,c) dove a e' la lunghezza della parola, b il numero di volcali presenti nella parola e c il numoero di maiuscole presenti nella parola.