Sei sulla pagina 1di 11

eserciziario di programmazione (versione 01-2019)

02-“Linguaggio Python”- Esercizi


Di seguito ho riportato una serie di esercitazione suddivise in base allo sviluppo degli argomenti presentati
a lezione

Sommario
6 – Funzioni – Stringhe - Tuple – Liste ............................................................................................................... 2
Dizionari ............................................................................................................................................................. 6
Funzioni ricorsive .......................................................................................................................................... 6
7 – File – I/O....................................................................................................................................................... 9
8 – File System ................................................................................................................................................. 10

Giaccaglini Giorgio - Liceo Scientifico “L. Da Vinci” Jesi pagina 1


eserciziario di programmazione (versione 01-2019)

6 – Funzioni – Stringhe - Tuple – Liste


600. max tra 2 numeri
Scrivi una funzione che prende due numeri come parametro e manda in print il più grande tra i due.
Per quanto Python disponga di una funzione max(), sei invitato a utilizzare le istruzioni If, Elif ed Else
per la scrittura dell'algoritmo.

601. max tra 3 numeri


Scrivi una funzione che prende stavolta tre numeri come parametro e restituisce il più grande tra
loro!
602. scrivere un programma che accetta in input una sequenza di numeri separati da una virgola e genera
una lista e una tupla che contengano i numeri dati. Esempio: fornito: 34, 44, 3, 44, 5 si deve ottenere
in uscita [’34’, ’44’, ‘3’, ’44’, ‘5’] e (’34’, ’44’, ‘3’, ’44’, ‘5’)

603. Sei una vocale?


Scrivi una funzione a cui viene passato un carattere come parametro, e che ci dice se il carattere è o
meno una vocale

604. Gira la stringa


Scrivi una funzione a cui passerai come parametro una stringa e ti restituirà una versione della
stessa stringa al contrario (ad esempio "abcd" diventa "dcba".

605. Sommatrice
Scrivi una funzione "sommatrice" che somma tra loro tutti gli elementi di una lista di numeri.

606. Moltiplicatore
Scrivi una funzione "moltiplicatrice" che moltiplica tra loro tutti gli elementi di una lista di numeri

607. Palindromo
Scrivi una funzione a cui viene passata una parola e riconosce se si tratta di un palindromo(parole
che si leggono uguali anche al contrario) oppure meno.

608. lista e range


Creare una lista con i primi 5 numeri interi non negativi con la funzione range().

609. Lunghezza di una stringa


Scrivi una funzione che manda in print la lunghezza di una stringa o lista passata come parametro.
In sostanza, seppur presente, provate a scrivere la vostra versione della funzione len()!

610. Istogrammi
Scrivi una funzione che, data una lista di numeri, fornisce in output un
istogramma basato su questi numeri, usando asterischi per disegnarlo. Ad
esempio, data la lista [3,7,9,5] deve produrre questo grafico:

611. Liste e lunghezze


Scrivi una funzione che, data in ingresso una lista A contenente parole, restituisce in output una lista
B di interi che rappresentano la lunghezza delle parole contenute in A.

Giaccaglini Giorgio - Liceo Scientifico “L. Da Vinci” Jesi pagina 2


eserciziario di programmazione (versione 01-2019)

612. Il maggiore di una lista


Scrivi un programma che, passata come parametro una lista di interi, fornisce in output il maggiore
tra i numeri contenuti nella lista.
613. massimo e minimo di un certo numero
Scrivere un programma che all’utente di inserire una sequenza di numeri. L’inserimento termina
quando l’utente scrive la parola “fatto”. Il programma deve quindi calcolare il massimo e il minimo
dei numeri inseriti.

614. Equazione 2° grado


Scrivi una funzione che forniti i parametri a, b e c di una equazione di secondo grado, calcoli le
soluzioni x1 e x2. Si tenga conto di tutti i casi possibili.

Suggerimento( Un’equazione di secondo grado scritta nella forma ax2+bx+c=0 è caratterizzata a, b, c.


Dopo aver calcolato il discriminante (delta) con la formula b*b -4*a*c, si possono riconoscere tre
situazioni:
 delta < 0 non esistono soluzioni reali;
 delta= 0 le due soluzioni sono reali e coincidenti;
 delta > 0 ci sono due soluzioni reali e distinte.
Inoltre bisogna prevedere il caso in cui il coefficiente a=0.
In questo caso bisogna risolvere una equazione di primo grado : b*x + c = 0 da cui si devono prevedere i
seguenti casi:
b=0ec=0 equazione indeterminata;
b=0 equazione impossibile

615. paroliamo1
Date due frasi in input, svolgere i seguenti punti:
1) realizzare una terza frase che alterni i caratteri della prima e della seconda frase;
2) realizzare una terza frase che alterni la parola di una con la parola dell'altra;
3) contare le vocali delle due frasi di input
4) contare le consonanti delle due frasi di input
5) raddoppiare le consonanti m e n
6) realizzare un dizionario italiano inglese in cui siete voi a mettere il significato inglese di ogni
parola delle due frasi di input
7) mettete in maiuscolo tutte le iniziali delle due frasi di input
8) stampare tutte le parole delle due frasi che iniziano con una vocale.

616. Raddoppio consonante


Realizzare una funzione in grado di trasformare una parola nel seguente modo: ad ogni consonante
della parola si deve raddoppiare la stessa con una "o" nel mezzo.
Ad esempio la parola "mangiare" diventa "momanongogiarore".

617. Presenza
Scrivi una funzione a cui vengono passati un valore e una lista di valori, e che ti dica in output se il
valore passato è presente o meno nella lista.

618. il frequenzimetro
Scrivi una funzione a cui passare una stringa come parametro, e che restituisca un dizionario
Giaccaglini Giorgio - Liceo Scientifico “L. Da Vinci” Jesi pagina 3
eserciziario di programmazione (versione 01-2019)

rappresentante la frequenza di ciascun carattere componente la stringa. Ad esempio, data una


stringa "ababcc", otterremo in risultato {"a": 2, "b": 2, "c": 2}

619. Geometria
Scrivi una funzione che, a scelta dell'utente, calcoli l'area di: -un cerchio -un quadrato -un rettangolo
-un triangolo

620. Min-max-media
Creare un programma che riempia una lista (100 elementi) con numeri casuali da 1 a 1000. Si vuole
conoscere il valore massimo, minimo, la media dei numeri inseriti.
Inoltre, si vuole sapere la percentuale dei pari e dispari inseriti in maniera random.

621. Tendenza all’infinito


Si utilizzi l’esercizio precedente (617) in modo da chiedere all’utente i numeri N da inserire nella lista
e si verifichi che per N molto grande (N  infinito) la percentuale dei numeri pari e dispari si
avvicinano al 50%.
622. Lotto
Realizzare un programma per la generazione casuale dei numeri del lotto. Si supponga:
1) 10 ruote (indicate ogni ruota con il suo nome di città come nella realtà)
2) ogni ruota ha 5 numeri
3) numeri doppi non possono esistere in una ruota
Si stampi quindi i numeri delle 10 ruote.

623. ROT-13
Il ROT-13 è un semplice cifrario monoalfabetico, in cui ogni lettera del messaggio da cifrare viene
sostituita con quella posta 13 posizioni più avanti nell'alfabeto.
Scrivi una semplice funzione in grado di criptare una stringa passata, o decriptarla se la stringa è già
stata precedentemente codificata.
suggerimento: si usi un dizionario per… e nel caso in cui nella stringa da decifrare ci sia una “NON”
lettera (numero o carattere), quella NON lettera non deve essere sostituita
624. gara (liste)
In una gara podistica ci sono 5 partecipanti. Si inseriscano in input i nomi dei partecipanti (in una
lista) e i relativi tempi (in un’altra lista). Si stampi poi la graduatoria di arrivo dal più veloce al più
lento. Suggerimento: probabilmente c’è bisogno di altre liste di appoggio e dei metodi studiati sulla
dispensa.
625. dati 2 liste di numeri naturali di N e M numeri ciascuna (N e M da chiedere in input e le liste da
riempire sempre in input), eseguire le seguenti operazioni:
1) costruire una lista di N+M elementi unendo le due liste date in input;
2) costruire una lista di N+M elementi (elementi delle liste di input) che sia però ordinata in ordine
decrescente.
3) costruire una lista con solo gli elementi PARI delle due liste di input (si ordini in senso crescente la
lista ottenuta).
626. Carrello elettronico (con liste)
Si scriva un programma che calcoli la spesa che si sostiene in un supermercato. Ad ogni inserimento
del prodotto nel carrello, il programma memorizza il bene inserito e il suo relativo costo. Ogni volta
che si raggiunge una spesa multipla di 50 euro (>50, >100, >150...) il programma deve fornire un

Giaccaglini Giorgio - Liceo Scientifico “L. Da Vinci” Jesi pagina 4


eserciziario di programmazione (versione 01-2019)

avvertimento del tipo: "Attenzione hai raggiunto la cifra di 50 euro...100 euro... Alla fine del ciclo, si
deve stampare lo scontrino (elenco dei beni acquistati con relativi prezzi e il totale della spesa).

Giaccaglini Giorgio - Liceo Scientifico “L. Da Vinci” Jesi pagina 5


eserciziario di programmazione (versione 01-2019)

Dizionari
Gli esercizi seguenti vanno svolti usando i dizionari. Da pensare bene la struttura dati.

660. registro elettronico


esercizio che permette la raccolta e l'analisi dei voti per materia. dovete permettere: 1)
inserimento 2)elenco dei voti (per materia e totale) 3) modifica di un voto inserito 4) media dei
voti per materia e media totale.
661. gara podistica
In una gara podistica ci sono 5 partecipanti. Si inseriscano in input i nomi dei partecipanti e i
relativi tempi. Si stampi poi la graduatoria di arrivo dal più veloce al più lento. Suggerimento:
probabilmente c’è bisogno di altre liste di appoggio e dei metodi studiati sulla dispensa.
662. carrello elettronico
Si scriva un programma che calcoli la spesa che si sostiene in un supermercato .Ad ogni
inserimento del prodotto nel carrello, il programma memorizza il bene inserito e il suo relativo
costo. Ogni volta che si raggiunge una spesa multipla di 50 euro (>50, >100, >150...) il programma
deve fornire un avvertimento del tipo: "Attenzione hai raggiunto la cifra di 50 euro...100 euro...
Alla fine del ciclo, si deve stampare lo scontrino (elenco dei beni acquistati con relativi prezzi e il
totale della spesa).
663. libreria
Negli esercizi seguenti, svilupperemo un semplice programma per la gestione degli ordini in una
libreria. Ogni libro è descritto da: • un nome, ovvero il titolo del libro; • una quantità, ovvero il
numero di copie del libro presenti nella libreria.
Si pensi a come rappresentare queste informazioni tramite un dizionario. Si scriva una funzione
insertBook(a,b) che dato un tale dizionario a: (i) controlli se un libro con titolo b è presente nella
libreria; (ii) se non è presente, si inserisca il libro nel sistema, con quantità pari ad 1; (iii) se b è
presente, allora la quantità va incrementata si 1.

Funzioni ricorsive
Nota: una funzione ricorsiva è una funzione che chiama se stessa.

Esempio:
Si definisce fattoriale di un numero naturale n (e si indica con n!), il prodotto dei numeri interi positivi
minori o uguali a tale numero.

n! = n*(n-1)*(n-2)*…….3*2*1

per esempio: 5! = 5*4*3*2*1 = 120.

Inoltre per definizione, 0! = 1.

È possibile eseguire il calcolo del fattoriale in modo ricorsivo, nel seguente modo:

per n=0; n! = 1;

per n>0; n! = n * (n-1)!

Quindi, la funzione ricorsiva che calcola il fattoriale di un numero è:


def fatt(n):
if n==0:
Giaccaglini Giorgio - Liceo Scientifico “L. Da Vinci” Jesi pagina 6
eserciziario di programmazione (versione 01-2019)

return 1
else:
return n*fatt(n-1)

n=int(input("fornisci il numero di cui vuoi il fattoriale: "))


print(fatt(n))

Di seguito è riportato lo schema grafico della ricorsione nel caso del fattoriale del numero 4.

Funzione invocante
main()
24
fatt(4)

Fattoriale 6
4*Fatt(3)
4
Fattoriale 2
3*Fatt(2)
3
Fattoriale 1
2*Fatt(1)
2

Fattoriale
1*Fatt(0)
1

664. Potenza
Calcolare con una funzione ricorsiva la potenza di un numero n fornito in input
665. Base 2
Convertire un numero decimale in un numero binario utilizzando la chiamata a funzione (funzione
ricorsiva). Ricordarsi del procedimento che divide il numero per due, nel calcola il resto. Il
procedimento ricorsivo termina quando la divisione per 2 è uguale a zero
666. Somma
Scrivere una funzione ricorsiva per calcolare la somma dei primi N numeri naturali, dove N è dato in
input dall’utente
667. Somma di due numeri
Scrivere una funzione ricorsiva che calcola l’operazione di somma sfruttando la seguente definizione
induttiva:
somma(x,y) = x se y=0;
somma(x,y) = 1 + somma(x, y-1) se y>0;
668. Prodotto di due numeri
Scrivere una funzione ricorsiva che calcola l’operazione di prodotto sfruttando la seguente
definizione:
prodotto(x,y)=0 se y=0;
prodotto(x,y) = somma(x, prodotto(x,y-1) se y>0

Giaccaglini Giorgio - Liceo Scientifico “L. Da Vinci” Jesi pagina 7


eserciziario di programmazione (versione 01-2019)

669. Contrario
Scrivi un programma che legge un numero intero positivo e stampa le cifre al contrario utilizzando
una funzione ricorsiva; esempio: letto 765, stampi 567

Giaccaglini Giorgio - Liceo Scientifico “L. Da Vinci” Jesi pagina 8


eserciziario di programmazione (versione 01-2019)

7 – File – I/O

700. area rettangolo


sviluppare un programma che legge da file “lati.txt” due valori reali per la base e l’altezza di un
rettangolo, visualizza i dati su schermo, calcola e visualizza l’area del rettangolo e salva il valore
calcolato nel file “area.txt”

701. secondi
Implementare un software che legge dal file “secondi.txt” un valore intero che rappresenta i
secondi trascorsi dalla mezzanotte di un dato giorno e che trasforma questo valore,
visualizzandolo su schermo in ore:minuti:secondi. Ad esempio, se il valore caricato dal file
“secondi.txt” fosse 4000 (uguale a 3600, 1 ora, + 360, 6 minuti, + 40), il programma scriverebbe su
video 1 : 6 : 40. I numeri vanno poi memorizzati nello stesso formato nel file “orario.txt”.

702. media
Dato un file denominato “numeri.txt” contenente esattamente 10 numeri interi, caricarne il
contenuto su una lista, procedere al calcolo della media aritmetica dei numeri inseriti,
visualizzare il risultato a video e salvarlo nel file “media.txt”

703. ricerca elementi


Dato un file “sequenza.txt” analogo a quello dell’esercizio precedente, caricare i dati su una lista
di interi, visualizzare i dati a video, chiedere un numero intero da cercare all’utente e procedere
alla ricerca di tutte le posizioni della lista ove questo numero si trovi. Scrivere tutte le posizioni
trovate riga per riga nel file “posizioni.txt”. Se il numero non viene mai trovato nella lista si
inserisca nel file la scritta maiuscola “NON TROVATO”.

704. ordinamenti
Scrivere un programma che legge dal file sequenza.txt una sequenza di interi. La ordina in modo
crescente e la salva ordinata sul file ordinati.txt.
Passo successivo: modificare l’esercizio precedente in modo che la sequenza ordinata sia salvata
sullo stesso file sequenza.txt

705. rubrica telefonica


Scrivere un programma che realizzi una rubrica telefonica. Ci deve essere un menù che permetta
le seguenti scelte: 1) inserimento nominativo (nome, cognome, numero telefonico) da scrivere su
file rubrica.txt; 2) visualizzazione su schermo di tutti i nominativi presenti su file rubrica.txt; 3)
cancellazione di un nominativo dal file rubrica.txt.
Siete liberi di impostare la struttura dei nominativi sul file, di come visualizzare su schermo i
nominativi e di come impostare la cancellazione di un nominativo a scelta dell’utente.

706. doppie
Scrivere un programma che letto un test da un file, elimini dal file tutte le doppie e riscrivi il
risultato su altro file

Giaccaglini Giorgio - Liceo Scientifico “L. Da Vinci” Jesi pagina 9


eserciziario di programmazione (versione 01-2019)

707. Conto Corrente


Realizzare un programma che vi permette di gestire il vostro “Conto Corrente”. In pratica:
1) il programma deve permettere l’inserimento di soldi che entrano (paghetta settimanale,
guadagni, vincite…) e di quelli che escono (spese per merende, per il fantacalcio, per la
benzina del motorino…)
2) bisogna calcolare il totale delle spese, degli ingressi e il saldo (entrate-spese)
3) queste informazioni devono essere memorizzate su un file in modo che la prossima volta che
si carica il programma per inserire altri dati, quelli precedentemente inseriti non siano persi.
(si ricarica il file)
Siete liberi di pensare ad una struttura dati come più vi piace e più si addice al vostro
bisogno. Importante è che ci sia un file da leggere e scrivere in cui siano memorizzate almeno
il saldo, il totale delle entrate e delle uscite.

8 – File System
800. MB
Scrivi una funzione che calcoli la somma delle dimensioni dei file presenti nella Cartella in cui si
sta operando, e che la restituisca in output espressa in MB

801. Backup
Scrivi una funzione "backup" che sia in grado di effettuare copie di backup di determinati tipi di
file, con le seguenti caratteristiche:
-Percorso da Scansionare, Percorso della Cartella di Backup e Tipologia dei File da copiare
vengono passate dall'Utente in esecuzione;
-Lo Script deve verificare la presenza o meno della Cartella di Backup al percorso fornito, e
qualora non fosse presente crearla in maniera autonoma.

802. Elenco
Stampare l’elenco dei file e cartelle che si trovano nella cartella corrente. Poi fate una versione più
evoluta in cui si fornisce in input il path della cartella di cui si vuole stampare l’elenco dei file della
cartella.

803. Elenco solo file


Stampare l’elenco dei file (solo file) che si trovano nella cartella corrente. Si chieda il nome della
cartella in input.

804. Info di sistema


Scrivi una funzione che fornisca in Output il Sistema Utilizzato, Sistema Operativo e versione
associata

805. La cercatrice
Scrivi una funzione "cercatrice" che scansioni un dato percorso di sistema alla ricerca di file .pdf.
La funzione deve avere le seguenti caratteristiche:
Il percorso fornito dev'essere anzitutto validato, in quanto deve portare a una cartella esistente;
Deve fornire un elenco dei file .pdf (con relativo percorso) man mano che questi vengono trovati;
Giaccaglini Giorgio - Liceo Scientifico “L. Da Vinci” Jesi pagina 10
eserciziario di programmazione (versione 01-2019)

In fine deve fornire in output il totale dei file .pdf che sono stati trovati durante la scansione

806. Gestione File System


Scrivere un programma che fornita una path del file system permetta, a seconda delle richieste
dell’utente – menù -, di presentare le seguenti informazioni.
--La dimensione della cartella di origine con elenco delle sottocartelle e file;
--La dimensione in MB di tutto l’albero gerarchico
--Elencare tutti i file presenti nell’albero gerarchico una volta che sia stata fornita la estensione
del file (es. file di tipo py, docx, txt, ….) indicando anche la loro occupazione in memoria
--Ricercare un file ed indicare la sua presenza e la cartella di presenza.

807. Voti
Scrivere un programma che permetta la gestione dei voti e delle materie. Si deve sviluppare un
programma che permetta l’inserimento delle materie (informatica, matematica, …), dei voti per
ogni materie suddivisi per quadrimestre, che permetta il calcolo della media per ogni materia e per
quadrimestre, il calcolo della media generale di tutte le materie.

808. ContoCorrente
Realizzare un programma che vi permette di gestire il vostro “Conto Corrente”. In pratica:
1) il programma deve permettere l’inserimento di soldi che entrano (paghetta settimanale,
guadagni, vincite…) e di quelli che escono (spese per merende, per il fantacalcio, per la benzina del
motorino…)
2) bisogna calcolare il totale delle spese, degli ingressi e il saldo (entrate-spese)
3) queste informazioni devono essere memorizzate su un file in modo che la prossima volta che si
carica il programma per inserire altri dati, quelli precedentemente inseriti non siano persi. (si
ricarica il file)
Siete liberi di pensare ad una struttura dati come più vi piace e più si addice al vostro bisogno.
Importante è che ci sia un file da leggere e scrivere in cui siano memorizzate almeno il saldo, il
totale delle entrate e delle uscite

Giaccaglini Giorgio - Liceo Scientifico “L. Da Vinci” Jesi pagina 11

Potrebbero piacerti anche