Lo scopo del laboratorio è di esercitarsi e misurare la propria preparazione: gli esercizi non sono troppo difficili, se si sono seguite le lezioni. Non vi viene comunque messo alcun voto.
Modalità di lavoro: gli studenti devono lavorare in autonomia o in piccoli gruppi, senza disturbare i colleghi. Il lavoro di gruppo è fruttuoso solo se tutti partecipano e se ognuno scrive una propria soluzione per tutti gli esercizi.
Il docente cercherà per quanto possibile di non occupare il tempo del laboratorio per introdurre materiale nuovo, anche se a volte questo sarà necessario. Il docente è a disposizione per aiutare gli studenti, che possono iniziare a lavorare anche prima che il docente arrivi in aula, se lo desiderano
Raccomandazioni: leggete bene il testo degli esercizi prima di chiedere chiarimenti. In ogni caso sarò in aula con voi.
Uso dei file di test: per aiutarvi a completare questa esercitazione avete a disposizione dei programmi di test per testare la vostra soluzione. Questi sono simili a quelli che avrete in sede di esame, pertanto vi consiglio di imparate ad usarli. Per portare a termine l’esercizio è necessario
python3 <fileditest>
dove <fileditest>
va ovviamente sostituito con il
nome del file di test appropriato per l’esercizio su cui state
lavorando. Per ogni esercizio ci sta un file di test indipendente, così
da poter lavorare sugli esercizi uno alla volta con più agio.
Il risultato di ogni 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
E
se la chiamata non può essere eseguita,F
se la funzione non restituisce il risultato
corretto,.
se la funzione restituisce il risultato
corretto.Scrivete una funzione crealista1(a, b)
che:
a
e
b
, con b
che deve essere un numero
naturale;ValueError
se il secondo parametro
è un intero negativo;b
interi a partire da a
.Ad esempio, l’istruzione s = crealista1(14.3, 5)
deve
assegnare a s
la lista
[15, 16, 17, 18, 19]
.
= crealista1(14.3, 5)
s print(s)
= crealista1(14, 7)
s print(s)
[15, 16, 17, 18, 19]
[14, 15, 16, 17, 18, 19, 20]
Il programma Python deve essere salvato nel file:
crealista1.py
File di test (scaricare con il click destro): test_crealista1.py
Scrivere una funzione azzeranegativi(valori)
che:
int
o float
)La funzione deve restituire nulla, ma deve modificare la lista
passata come argomento. In particolare è possibile scrivere questa
funzione senza utilizzare l’istruzione return
. Guardate
nell’esempio successivo come si deve comportare la funzione
= [1.2, -0.4, 5, -2, 12 ]
L
azzeranegativi(L)
print(L)
[1.2, 0, 5, 0, 12]
Il programma Python deve essere salvato nel file:
azzeranegativi.py
File di test (scaricare con il click destro): test_azzeranegativi.py
Scrivere una funzione minimo(valori, start=0)
che:
ValueError
se il parametro
ricevuto è una lista vuota;ValueError
se il parametro
start
non è un indice corretto per la sequenza di
valori;start
. Il
parametro start
è opzionale, e vale 0 se non viene
specificato.Il programma Python deve essere salvato nel file:
minimo.py
File di test (scaricare con il click destro): test_minimo.py
Scrivere una funzione massimilocali(L)
che:
L
;Un elemento di una sequenza è un massimo locale se:
Una lista contenente meno di tre elementi non contiene alcun massimo locale, quindi in questo caso deve essere restituita una lista vuota.
Il programma Python deve essere salvato nel file:
massimilocali.py
File di test (scaricare con il click destro): test_massimilocali.py
Scrivere una funzione bitonica(L)
che:
L
;True
se la sequenza è
bitonica, e False
altrimenti.Per quanto riguarda il nostro esercizio, una sequenza è considerata bitonica se è composta da una prima parte strettamente crescente con almeno due elementi, seguita da una parte strettamente decrescente, anche questa composta da almeno due elementi. Ad esempio sono bitoniche le seguenti sequenze:
2 4 13 34 23
3 4 1
27 48 113 134 23 12
Osservate che, come negli esempi, l’ultimo elemento della parte crescente è anche il primo della parte decrescente. Nessuna sequenza bitonica può avere meno di tre elementi. Infatti la lista
2 4 6 6 3 -2
non è bitonica perché il segmento 6 6
non è strettamente
né crescente né decrescente.
print(bitonica([2,4,13,34,23]))
print(bitonica([3,4,1]))
print(bitonica([27,48,113,134,23,12]))
print(bitonica([2,4,6,6,3,-2]))
True
True
True
False
Il programma Python deve essere salvato nel file:
bitonica.py
File di test (scaricare con il click destro): test_bitonica.py