Informatica 2023-2024, Esercitazione 7

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

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


Lista di numeri

Scrivete una funzione crealista1(a, b) che:

Ad esempio, l’istruzione s = crealista1(14.3, 5) deve assegnare a s la lista [15, 16, 17, 18, 19].

s = crealista1(14.3, 5)
print(s)
s = crealista1(14, 7)
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


Azzerare elementi negativi

Scrivere una funzione azzeranegativi(valori) che:

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

L = [1.2, -0.4, 5, -2, 12 ]

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


Posizione del minimo

Scrivere una funzione minimo(valori, start=0) che:

Il programma Python deve essere salvato nel file: minimo.py

File di test (scaricare con il click destro): test_minimo.py


Massimi locali

Scrivere una funzione massimilocali(L) che:

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


Verificare se una sequenza è bitonica

Scrivere una funzione bitonica(L) che:

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:

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

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