Modalità di svolgimento dell'esercitazione

Viene richiesto di scrivere funzioni per risolvere vari problemi, e viene fornito anche uno strumento che mette alla prova il comportamento delle funzioni che avete scritto.

Create una cartella, nella quale saranno creati sia i file contenenti le funzioni che avete scritto (una per ciascun file), sia i file di test (forniti dal docente).
I nomi di questi file devono essere esattamente i seguenti:

Per ciascuno dei problemi elencati nel seguito dovrete scrivere un file contenente la soluzione richiesta, in cui il nome della funzione deve essere esattamente quello indicato nel testo seguente.

Una volta salvato il file nella cartella, e salvato anche il corrispondente file di test fornito dal docente, dovete eseguire il comando

python3 test_lab9_X.py
dove X è il numero da 1 a 7 corrispondente all'esercizio che volete verificare.

Il risultato del test è una schermata (o più schermate) nella quale si mostra:

Per ogni funzione scritta vengono eseguite chiamate con diversi valori dei parametri. L'esito dei test viene riportato con il carattere


Funzioni su liste

Primo esercizio: calcolo delle medie mobili

Scrivere una funzione medie_mobili(seq, k) che:

Ad esempio, se la funzione medie_mobili(seq, k) viene chiamata con parametri
seq = [2, 4, 3, 6, 8, 9, 10, 12] e k = 4
deve essere restituita la lista [3.75, 5.25, 6.5, 8.25, 9.75], che rappresenta le medie delle 5 sequenze [2, 4, 3, 6], [4, 3, 6, 8], [3, 6, 8, 9], [6, 8, 9, 10], [8, 9, 10, 12].

Il file di test da memorizzare nella propria cartella per questo esercizio è test_lab9_1.py
La soluzione deve essere prodotta in un file di nome labEserc9_1.py

Secondo esercizio: posizione della massima media mobile

Scrivere una funzione pos_max_media_mobile(seq, k) che, utilizzando anche la funzione definita nell'esercizio precedente:

Ad esempio, se viene chiamata con parametri
[2, 4, 3, 6, 8, 9, 10, 12], 4
deve essere restituito il valore 4, poiché la sequenza delle medie mobili è [3.75, 5.25, 6.5, 8.25, 9.75] e il massimo compare in posizione 4.

Il file di test da memorizzare nella propria cartella per questo esercizio è test_lab9_2.py
La soluzione deve essere prodotta in un file di nome labEserc9_2.py

Esercizi su matrici

Terzo esercizio: verificare se una lista rappresenta una matrice rettangolare

Scrivere una funzione verifica_mat_rett(m) che:

Il file di test da memorizzare nella propria cartella per questo esercizio è test_lab9_3.py
La soluzione deve essere prodotta in un file di nome labEserc9_3.py

Quarto esercizio: creazione e inizializzazione di una matrice

Scrivere una funzione crea_mat(nrighe, ncol, val) che:

Il file di test da memorizzare nella propria cartella per questo esercizio è test_lab9_4.py
La soluzione deve essere prodotta in un file di nome labEserc9_4.py

Quinto esercizio: creazione della matrice trasposta

Scrivere una funzione trasposta(m) che:

Il file di test da memorizzare nella propria cartella per questo esercizio è test_lab9_5.py
La soluzione deve essere prodotta in un file di nome labEserc9_5.py

Sesto esercizio: contare il numero di righe strettamente crescenti di una matrice

Scrivere una funzione num_righe_crescenti(m) che:

Il file di test da memorizzare nella propria cartella per questo esercizio è test_lab9_6.py
La soluzione deve essere prodotta in un file di nome labEserc9_6.py

Settimo esercizio: punto di sella di una matrice

Un elemento m[i][j] di una matrice m si dice punto di sella se è strettamente maggiore di tutti gli altri elementi sulla riga i ed è strettamente minore di tutti gli altri elementi sulla colonna j. Notare che una matrice contiene al massimo un solo punto di sella.
Ad esempio, la matrice

9   4  16  10   4
2   5   7   6   2
8  12  13   9   1
ha un punto di sella a riga 1 e colonna 2 (il valore 7) poiché 7 è il massimo della riga 1 ed è anche il minimo della colonna 2.
Scrivere una funzione punto_di_sella(m) che:

Il file di test da memorizzare nella propria cartella per questo esercizio è test_lab9_7py
La soluzione deve essere prodotta in un file di nome labEserc9_7.py