Diario delle lezioni - Canale MZ (Monti)
- 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.
This topic: Programmazione1/AA19_20
> DiarioDelleLezioni-CanaleMZ
Topic revision: r24 - 2019-12-17 - AngeloMonti