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.
    2. 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.

Topic attachments
I Attachment History Action Size Date Who Comment
Compressed Zip archivezip 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
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 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