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.
La maggior parte di questi esercizi sono già stati svolti in laboratorio o a lezione: si tratta di prendere la soluzione, togliere le istruzioni di input ed output, ed incapsulare il tutto in una funzione.
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 semestre: -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.
Si noti che poiché la funzione input_between ha come scopo principale l'interazione con l'utente, allora è corretto che interagisca con istruzioni print e input, a differenza che in tutti gli altri esercizi qui sopra.