Esercizi: funzioni
Esercizi
A partire dalla lezione di laboratorio di oggi spesso i testi degli esercizi chiederanno di scrivere una funzione e non una programma. Nonostante ciò, per poter provare che la funzione che avete scritto faccia il suo dovere, dovete ovviamente scrivere anche un programma principale, per quanto minimale, che richiami la funzione. Talvolta questi programmi si chiamano driver, ma attenzione perché il termine driver si usa anche per indicare quelle parte dei sistemi operativi che si occupane di gestire una periferica.
Esercizio 1
Scrivere la funzione area_trapezio(b1, b2, h) che calcola e restituisce l'area di un trapezio con basi b1 e b2 ed altezza h.
Esercizio 2
Scrivere la funzione somma_numeri(a, b) che restituisce la somma di tutti i numeri da a fino a b (estremi inclusi). Si può assumere che la funzione venga chiamata con a ≤ b. Ad esempio, somma_numeri(1, 10)
restituisce 55
.
Esercizio 3
Scrivere la funziona somma_dadi(n, k) che lancia virtualmente n dadi a k facce, somma i risultati ottenuti, e restituisce il risultato. Per "lanciare un dado a k facce" ovviamente non si intende veramente di lanciare un dado, ma generare un numero casuale tra 1 e k.
Esercizio 4
Scrivere una funzione reverse(s) che restituisce la stringa s con i caratteri in ordine invertito. Ad esempio reverse("ciao")
restituisce "oaic"
.
Esercizio 5
Scrivere la funzione input_between(prompt, a, b). La funzione input_between si comporta in modo simile alla combinazione int(input(...)):
- prima di tutto, stampa la stringa prompt e legge l'input da tastiera;
- se l'input è un numero compreso tra a e b la funzione termina restituendo il valore immesso dall'utente;
- se l'input non è compreso tra a e b, viene visualizzato un messaggio di errore e si ricomincia dal punto 1.
Ad esempio, consideriamo il seguente programma che calcola la media di due voti (in decimi) usando la funzione input_between per leggere i valori da tastiera:
voto1 = input_between("Immetti il voto del primo semestre: ", 1, 10)
voto2 = input_between("Immetti il voto del secondo semestre: ", 1, 10)
print("La media dei voti è", (voto1+voto2)/2)
Questo è un esempio di interazione con il programma (in grassetto quello che viene scritto dall'utente):
Immetti il voto del primo semestre
: 22
Errore nell'inserimentoImmetti il voto del primo semstre
: -5
Errore nell'inserimentoImmetti il voto del primo semestre
: 7
Immetti il voto del secondo semestre: 35
Errore nell'inserimento
Immetti il voto del secondo semestre: 9La media dei voti è
8
Vi invito ad osservare come, a seconda del valore del primo parametro di input_between (il parametro prompt), il messaggio visualizzato all'utente cambia. Il messaggio di errore rimane invece sempre uguale.
Notare che questa è una eccezione rispetto a quanto avviene normalmente, ovvero che le funzioni non interagiscono direttamente con l'utente. Questo perché noi utilizzeremo input_between come rimpiazzo di input quando vogliamo che l'utente sia forzato ad inserire un valore in un intervallo specifico. In questo caso input_between deve necessariamente accettare in input da tastiera un numero immesso dall'utente, e stampare sia il prompt che l'eventuale messaggio di errore.