---+ 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() 1 come python valuta i test if lista:, if stringa; if x+y ecc.ecc. 1 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: [[%ATTACHURL%/foto.zip][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.
Attachments
Attachments
Topic attachments
I
Attachment
History
Action
Size
Date
Who
Comment
zip
foto.zip
r1
manage
1260.8 K
2019-11-12 - 14:42
AngeloMonti
file con program.py con esercizi sulle immagini
This topic: Programmazione1/AA19_20
>
DiarioDelleLezioni-CanaleMZ
Topic revision: r24 - 2019-12-17 - AngeloMonti
Copyright © 2008-2025 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki?
Send feedback