Lezione laboratorio del 4/12/2023 (matrici)
Esercizi
Esercizio 0
Riscrivere la funzione somma_righe che trovate qui sotto, oltre che nel notebook della lezione del 30 novembre, in modo da utilizzare l'istruzione for per l'estrazione diretta degli elementi delle liste invece di for...range.
Esercizio 1
Scrivere la funzione somma_colonne che prende una matrice di numeri in input (rappresentata come una lista di liste) e restituisce la somma delle colonne della matrice. Ad esempio, se
l = [
[1, 2, 3],
[4, 5, 6]
]
allora somma_colonne(l) restituisce la lista [5, 7, 9]. Potete supporre che la tabella sia rettangolare, ovvero tutte le righe hanno la stessa lunghezza.
Suggerimento: partite dalla funziona somma_righe della lezione del 30 novembre, ma scambiate le istruzioni for in modo che il for esterno scandisca le colonne, e il for interno scandisca le righe.
Esercizio 2
Scrivere una funzione fill_table(l,v) che prende in input una tabella l (anche frastagliata, rappresentata come una lista di liste) ed un valore v, e modifica la tabella sul posto inserendo in ogni cella il valore v. Ad esempio, se l è la lista [ [1, 2, 3], [4, 5] ] se viene chiamata la funzione fill_table(l, 8), dopo l'esecuzione della funzione la lista l varrà [ [8, 8, 8], [8 ,8 ] ].
Esercizio 3
Scrivere una funzione somma_matrici(a, b) che prende in input due matrici a e b (anche frastagliate, rappresentate come liste di liste) e modifica sul posto la matrice a aggiungendo ad ogni elemento il corrispondente elemento di b. Potete supporre che le matrici a e b siano compatibili, ciò abbiano lo stesso numero di riga e le righe della stessa lunghezza. Ad esempio, se
a = [
[ 1, 2, 3 ],
[ 4, 5 ]
]
e
b = [
[ 0, 1, -1 ],
[ 2, 3 ]
]
dopo l'esecuzione di somma_matrici(a, b) la lista b sarà invariata ma la lista a conterrà:[
[ 1, 3, 2 ],
[ 6, 8 ]
]
Scrivere anche uno o più test per questa funzione.
Esercizio 4
Scrivere una funzione matrice_identica(n) che prende in input un intero positivo n restituisce una matrice (rappresentata come una lista di liste) con n righe ed n colonne riempito di zeri tranne che per gli elementi nelle posizioni (0,0), (1,1), etc... che contengono 1 (per chi sa un po' di calcolo matriciale, deve restituire la matrice identità di ordine n).
Ad esempio, matrice_identica(3) restituirà la lista
[
[ 1, 0, 0 ],
[ 0, 1, 0 ],
[ 0, 0, 1 ]
]
Esercizio 5
Scrivere una funzione tavola_pitagorica(n) che prende in input un numero intero positivo n e restituisce un matrice (rappresentata come una lista di liste) di dimension n * n tale che, in posizione (i, j) contiene il prodotto i * j.
Esercizio 6
Scrivere una funzione somma_matrici2(a, b) simile a quella dell'esercizio 3 ma che non modifica né a né b. La matrice somma viene invece restituita come valore di ritorno della funzione. Potete supporre che le matrici a e b siano compatibili, ciò abbiano
lo stesso numero di riga e le righe della stessa lunghezza.
Scrivere anche uno o più test per questa funzione.