Esercizi Python
Introduzione
- Quali sono i principi di funzionamento di Python ? Elencane almeno 5.
- Quali sono i principali ambiti di utilizzo di Python?
- Quali sono le tre modalità di esecuzione del codice Python? Descrivi brevemente ciascuna.
- Come viene dichiarata una variabile in Python? Cosa cambia rispetto ad altri linguaggi?
- Quali sono le 4 strutture dati fondamentali di Python? Descrivi brevemente ciascuna con un esempio.
- Qual è la differenza tra
ifewhilein Python? Come viene gestita l’indentazione? - Cosa fa l’istruzione
defin Python? Fornisci un esempio di funzione. - Quali sono i punti di forza e quelli di debolezza di Python? Elencane almeno 3 per ciascuna categoria.
- Perché Python ha una comunità di programmatori così grande? E qual è il suo ruolo nell’intelligenza artificiale?
Fondamentali
- Scrivi un programma che dichiari variabili di tipo
int,float,strebool, assegnando a ciascuna un valore appropriato. - Dato il valore
x = 7ey = 3, calcola e stampa a schermo il risultato di: somma, prodotto, sottrazione, divisione in virgola mobile, divisione intera, modulo (resto) e potenza. - Scrivi un programma che chieda all’utente due numeri e stampi il risultato della loro divisione intera e del modulo (resto).
- Dato
a = 10, scrivi le istruzioni per aggiornareasommandogli 5, moltiplicandolo per 3 e sottraendogli 2, utilizzando le operazioni abbreviate. - Scrivi un programma che chieda all’utente due numeri e stampi
Truese il primo è maggiore o uguale al secondo,Falsealtrimenti. - Dato che
p = Trueeq = False, scrivi tre istruzioni che stampino il risultato di:p and q,p or q, enot p. - Cosa stampa Python per ciascuno dei seguenti valori valutati come booleani?
"","Ciao",0,42,[],None. - Scrivi un programma che chieda all’utente il proprio nome e l’età, e stampi un messaggio con f-string del tipo: “Ti chiami [nome] ed hai [età] anni.”
- Scrivi un programma che chieda all’utente due valori e li stampi separati da un trattino (
-) utilizzando il parametrosepdiprint. - Scrivi un programma che chieda all’utente il proprio nome e stampi “Ciao [nome]” usando una f-string.
- Scrivi un programma che chieda all’utente un voto (da 0 a 10) e stampi: “Ottimo” se ≥ 9, “Buono” se ≥ 7, “Sufficiente” se ≥ 6, “Insufficiente” altrimenti.
- Scrivi un programma che chieda all’utente la base e l’altezza di un triangolo e stampi l’area calcolata con una f-string.
- Scrivi un programma che chieda all’utente un numero e stampi “Positivo” se maggiore di 0, “Negativo” se minore di 0, “Zero” altrimenti.
- Scrivi un programma che stampi i numeri da 0 a 9 utilizzando un ciclo
while. - Scrivi un programma che chieda all’utente un numero limite e poi chieda tanti numeri quanti ne ha specificati il limite, stampando alla fine quanti di essi sono positivi.
Liste
- Crea una lista chiamata
mistache contenga un numero intero, una stringa e un’altra lista[10, 20]. - Data la lista
numeri = [1, "a", True, None], scrivi le istruzioni per stamparne la lunghezza. - Data la lista
frutta = ["mela", "pera", "uva"], scrivi le istruzioni per stampare l’elemento “pera” usando l’indice. - Data la lista
numeri = [10, 20, 30, 40], scrivi le istruzioni per stampare30utilizzando un indice negativo. - Data la lista
numeri = [10, 20, 30, 40], scrivi le istruzioni per modificare l’elemento all’indice 0 assegnandogli il valore99. - Data la stringa
testo = "abcdefgh", scrivi le istruzioni per stampare una sottolista (slice) che contenga i caratteri dall’indice 2 fino al 4 (escluso il 5). - Data la lista
numeri = [10, 20, 30, 40, 50], scrivi le istruzioni per stampare una slice che parta dall’indice 3 fino alla fine della lista. - Data la lista
lettere = ['a', 'b', 'c', 'd'], scrivi le istruzioni per stampare una slice che vada dall’indice 1 fino al penultimo elemento. - Data la lista
lista = [1, 2, 3], scrivi le istruzioni per inserire il valore0all’inizio della lista usandoinsert. - Data la lista
lista = [1, 2], scrivi le istruzioni per aggiungere il valore3alla fine della lista usandoappend. - Data la lista
lista = [10, 20, 30], scrivi le istruzioni per eliminare l’elemento all’indice 1 usandodel. - Data la lista
lista = [1, 2, 3], scrivi le istruzioni per rimuovere il valore2usandoremove. - Data la lista
lista = [1, 2], scrivi le istruzioni per aggiungere[3, 4]alla fine della lista utilizzando l’assegnazione per slice. - Data la lista
lista = [10, 20, 30, 40], scrivi le istruzioni per rimuovere tutti gli elementi a partire dall’indice 2 usando l’assegnazione per slice. - Data la lista
lista = [1, 2, 3], scrivi le istruzioni per invertire l’ordine degli elementi. - Data la lista
lista = [5, 2, 8, 1], scrivi le istruzioni per ordinarla in ordine crescente. - Data la lista
lista = ["a", "b"], scrivi le istruzioni per verificare se la stringa “c” è presente nella lista. - Data la lista
lista = [1, 2, 2, 3], scrivi le istruzioni per contare quante volte appare il numero2. - Date le liste
lista1 = [1, 2]elista2 = [3, 4], scrivi le istruzioni per creare una nuova lista che contenga tutti gli elementi di entrambe. - Scrivi le istruzioni per creare una lista
[5, 5, 5]utilizzando l’operatore di moltiplicazione sulle liste. - Data la lista
numeri = [10, 5, 20], scrivi le istruzioni per stampare il valore minimo, quello massimo e la somma degli elementi. - Data la lista
lista = ["a", "b", "c"], scrivi le istruzioni per trovare e stampare l’indice della prima occorrenza di “b”. - Scrivi un ciclo
forche stampi i numeri da 0 a 4 utilizzando la funzionerange. - Scrivi un ciclo
forche stampi i numeri da 2 a 5 utilizzando la funzionerange. - Scrivi le istruzioni per creare una lista
[0, 1, 2, 3, 4, 5]utilizzandorange. - Data la lista
spese = [10, 20], scrivi un ciclo che utilizzienumerateper stampare sia l’indice che il valore di ogni elemento. - Data la lista annidata
matrix = [[1, 2], [3, 4]], scrivi le istruzioni per accedere e stampare il valore4. - Data la lista annidata
matrix = [[1, 2], [3, 4]], scrivi le istruzioni per modificare il valore3assegnandogli9. - Scrivi una list comprehension che crei la lista
[2, 4, 6]partendo darange(1, 4)moltiplicando ogni elemento per 2. - Scrivi una list comprehension che crei la lista
[2, 4, 6]partendo darange(1, 7)mantenendo solo i numeri pari. - Scrivi le istruzioni per creare una lista contenente il quadrato solo dei numeri pari compresi tra 1 e 10 usando una list comprehension.
- Crea una list comprehension che generi la lista
[1, 4, 9, 16, 25]partendo darange(1, 6)elevando al quadrato ogni elemento.
Tuple
- Data una tupla
coordinate = (45.07, 9.23)che rappresenta le coordinate di una città, utilizzare l’unpacking per assegnare la latitudine alla variabilelate la longitudine alla variantelon. Stampare il risultato. - Creare una tupla
spesecontenente(importo, descrizione)con importi a virgola mobile e descrizioni testuali. Tramite input dell’utente, creare una lista di spese con relativa descrizione. Utilizzare poi un cicloforconenumerate()per stampare ogni spesa con il suo indice, formattando l’importo a due decimali. - Scrivere del codice che inverta i valori di due variabili
aebutilizzando l’unpacking delle tuple, senza utilizzare una variabile temporanea. Stampare i valori prima e dopo l’inversione. - Data una tupla
punteggi = (15, 20, 18, 22, 19), calcolare la media dei punteggi utilizzando la funzionesum()e stampare il risultato arrotondato a due decimali. - Creare una tupla
daticontenente tre elementi: un nome (stringa), un’età (intero) e una lista di voti. Tentare di modificare il primo elemento della tupla e gestire l’errore con un bloccotry/except, spiegando perché l’operazione non è consentita.
Zip
- Dati due elenchi
nomi = ["Anna", "Luca", "Giulia", "Marco"]ecitta = ["Milano", "Roma", "Napoli", "Torino"], utilizzarezip()per creare una lista di coppie e stampare ogni coppia nel formato"Nome vive a Città". - Dati due elenchi di lunghezza diversa:
prodotti = ["penna", "quaderno", "gomma"]eprezzi = [1.5, 3.0], utilizzarezip()per accoppiarli e stampare le coppie. Spiegare quale elemento viene perso e perché.
Set
- Data la lista
numeri = [1, 2, 2, 3, 4, 4, 5, 5, 5], convertirla in unsetper rimuovere i duplicati e stampare il risultato. Convertire nuovamente il set in una lista ordinata e stamparla. - Dati due set
classA = {"Anna", "Luca", "Giulia", "Marco"}eclassB = {"Luca", "Paolo", "Giulia", "Sara"}, calcolare e stampare: gli studenti presenti in entrambe le classi (intersezione), tutti gli studenti unici (unione), e solo quelli presenti in una classe ma non nell’altra (differenza simmetrica). - Creare un
setchiamatoingredienticon almeno cinque ingredienti di una ricetta. Tentare di aggiungere un ingrediente duplicato e verificare che il set non lo inserisca due volte. Stampare il risultato finale. - Dati i set
numeri_pari = {2, 4, 6, 8, 10}enumeri_dispari = {1, 3, 5, 7, 9}, calcolare l’unione e l’intersezione tra i due insiemi. Spiegare il risultato dell’intersezione. - Creare un
frozensetchiamatocostanticontenente i valori[3.14, 2.71, 1.61]. Tentare di aggiungere un nuovo elemento al frozenset e gestire l’errore contry/except, spiegando la differenza trasetefrozenset.
Stringhe
- Data la stringa
frase = "Python è un linguaggio di programmazione", estrarre le parole"linguaggio"e"programmazione"e ristampare la stringa senza queste parole. - Scrivere del codice che prenda una stringa
testo = " Ciao Mondo! "e rimuova gli spazi bianchi iniziali e finali, converta il risultato in maiuscole e stampi la stringa trasformata. - Data una lista di parole
parole = ["ciao", "mondo", "python", "programmazione"], unire tutte le parole in una singola stringa separata da spazi e la stampi. - Scrivere un ciclo che prenda una stringa
parolainserita dall’utente e stampi ogni carattere su una riga diversa, insieme al suo indice. - Data la stringa
testo = "banana", contare quante volte appare la lettera"a"e stampare il risultato. - Scrivere un programma che prenda una frase e verifichi se contiene la parola
"Python"utilizzando l’operatorein. Se presente, stampare la posizione della prima occorrenza. - Data la stringa
frase = "il gatto gioca nel giardino", sostituire tutte le occorrenze di"gatto"con"cane"e stampare la frase modificata. - Creare una stringa su più righe utilizzando le triple virgolette che descriva un breve testo (almeno tre righe). Stampare la stringa e calcolare il numero di caratteri totali con
len(). - Data la stringa
codice = "ABC-1234-XYZ", utilizzare lo slicing per estrarre la parte numerica"1234"(escludendo i trattini) e stampare il risultato. - Scrivere un programma che prenda una stringa
testoe verifichi se è un palindromo (si legge uguale al contrario), ignorando maiuscole e spazi. StampareTrueoFalse.
Dizionari
- Creare un dizionario
studentecon chiavi"nome","età"e"voti"(dovevotiè una lista di interi). Stampare il numero di chiavi del dizionario conlen(). - Dati due elenchi
nomi = ["Mario", "Luca", "Anna"]evoti = [18, 20, 15], creare un dizionario che associ ogni nome al proprio voto utilizzandozip()e stampare tutte le coppie chiave-valore con.items(). - Data la seguente struttura di un inventario:
pythoninventario = {
"laptop": {"prezzo": 900, "quantità": 5},
"mouse": {"prezzo": 25, "quantità": 10},
"tablet": {"prezzo": 450, "quantità": 8}
}Stampare il prezzo del "tablet" e aggiungere un nuovo prodotto "stampante" con prezzo 200 e quantità 3. Stampare l’inventario aggiornato.
- Data la lista
frutta = ["mela", "banana", "mela", "arancia", "banana", "mela"], creare una lista di dizionari che indichi per ogni frutto quante volte compare. Stampare il risultato. - Dati i dizionari
persona1 = {"nome": "Anna", "età": 25}epersona2 = {"nome": "Luca", "età": 30}, creare un nuovo dizionariorubricache associ a ciascun nome il proprio dizionario di informazioni. Stampare l’età di"Luca"utilizzando.get()con un valore di default"sconosciuto". - Data la lista
spese = [("pizza", 15.0), ("pane", 2.5), ("acqua", 1.0)], creare un dizionario che associ il nome del prodotto al prezzo e calcolare il totale della spesa. Stampare ogni voce e il totale. - Creare un dizionario
utenticon tre utenti, ciascuno con chiavi"nome"e"ruolo". Utilizzare.keys(),.values()e.items()per stampare separatamente: l’elenco dei nomi, l’elenco dei ruoli e tutte le coppie nome-ruolo. - Data la stringa
testo = "il gatto corre veloce e il cane insegue", creare un dizionario che conti quante volte appare ogni parola nel testo. Stampare le parole con la loro frequenza in ordine alfabetico. - Dati due dizionari
d1 = {"a": 1, "b": 2}ed2 = {"b": 3, "c": 4}, unirli in un unico dizionariod_unione. Se una chiave è presente in entrambi, il valore del secondo dizionario deve sovrascrivere quello del primo. Stampare il risultato. - Creare un dizionario
voti_esamecon almeno cinque studenti e i rispettivi voti (da 18 a 30). Calcolare e stampare la media dei voti, il voto più alto e il voto più basso. Stampare anche l’elenco degli studenti che hanno preso un voto superiore alla media.
Semplici programmi in Python
- Calcolo rate ammortamento
a) Scrivere un programma che dato un capitale prestato, il tasso di interesse annuale, e il valore della rata fissa, calcoli il numero di mensilità richieste per la restituzione del prestito. Si ricorda che il calcolo del capitale rimanente va fatto su base mensile con la seguente formula:
dove Cm+1 è il residuo del mese successivo, Cm è il residuo attuale, t il tasso annuale ed R la rata fissa.
b) Il mutuo alla francese a rata fissa è un mutuo che prevede una rata fissa che dipende dal capitale prestato, il tasso di interesse annuale ed il numero di anni, dove la rata è calcolata con la seguente formula:
dove C è il capitale prestato, tm il tasso di interesse mensile ed m il numero totale di mesi. Per calcolare la somma totale da restituire va quindi moltiplicato RxM. Per ogni mensilità della restituzione del mutuo occorre poi calcolare la quota capitale e la quota interessi, secondo la seguente procedura:
- calcolo interessi mensili: Im = C*t;
- quota capitale: Qc = R – Im
- capitale residuo: Cm+1 = Cm-Qc
Applicando le suddette formule creare un programma che richiede capitale, tasso annuale e numero di anni e stampa luna tabella con l’intero piano di ammortamento, cioè che mostra per ogni mese la rata, gli interessi pagati, la quota capitale restante ed il residuo di capitale da restituire.
2. Registro voti degli studenti
Scrivere un programma interattivo che gestisca le votazioni di una classe. Il programma deve permettere all’utente di inserire il numero di studenti e, per ciascuno, il nome (stringa) e una lista di voti (lista di float). I dati devono essere memorizzati in un dizionario dove la chiave è il nome dello studente e il valore è una lista di voti. Il menu deve offrire le seguenti opzioni:
– (1) aggiungere un nuovo studente con i suoi voti;
– (2) visualizzare tutti gli studenti con il loro nome, la lista dei voti e la media calcolata;
– (3) cercare uno studente per nome e stampare i suoi voti e la media;
– (4) calcolare e stampare la media generale della classe (media di tutte le medie individuali);
– (5) trovare e stampare lo studente con la media più alta e quello con la media più bassa;
– (0) uscire.
Il programma deve utilizzare un ciclo while con sentinella per gestire il menu, f-string per la formattazione dell’output, e i metodi .keys(), .values() e .items() per accedere ai dati del dizionario.
3. Gestione inventario di un negozio
Scrivere un programma interattivo per gestire l’inventario di un negozio. L’utente deve poter inserire prodotti con nome (stringa), prezzo (float) e quantità (int). I dati devono essere organizzati in un dizionario dove la chiave è il nome del prodotto e il valore è una tupla (prezzo, quantità). Il menu deve offrire:
– (1) aggiungere un nuovo prodotto con nome, prezzo e quantità;
– (2) visualizzare l’inventario completo stampando ogni prodotto con il suo prezzo e la quantità disponibile;
– (3) cercare un prodotto per nome e stamparne i dettagli;
– (4) calcolare il valore totale dell’inventario (somma di prezzo × quantità per ogni prodotto);
– (5) trovare e stampare il prodotto più costoso e quello con la quantità maggiore;
– (6) eliminare un prodotto dato il suo nome;
– (0) uscire.
Il programma deve utilizzare un ciclo while, f-string per la formattazione, il metodo .items() del dizionario e le funzioni min(), max() e sum() per i calcoli.
4. Rubrica indirizzi con ricerca — Scrivi un programma interattivo che gestisca una rubrica di contatti. Ogni contatto deve essere rappresentato come un dizionario con chiavi "nome", "cognome", "telefono" e "email". Tutti i contatti devono essere memorizzati in una lista di dizionari. Il menu deve offrire:
– (1) aggiungere un nuovo contatto chiedendo nome, cognome, telefono ed email;
– (2) visualizzare tutti i contatti in formato tabellare utilizzando un ciclo for con enumerate();
– (3) cercare contatti per nome o cognome utilizzando l’operatore in sulle stringhe e stampare tutti i risultati;
– (4) ordinare alfabeticamente l’elenco dei contatti per cognome utilizzando il metodo .sort() e visualizzarli;
– (5) eliminare un contatto dato il suo indice nella lista utilizzando del; (6) contare e stampare quanti contatti sono presenti;
– (0) uscire.
Il programma deve utilizzare un ciclo while, f-string per la formattazione, list comprehension e le funzioni len() e sorted().
5. Lista della spesa con categorie — Scrivi un programma interattivo per gestire una lista della spesa organizzata per categorie. L’utente deve poter inserire articoli con nome (stringa), prezzo (float) e categoria (stringa, es. “frutta”, “verdura”, “detergenti”). I dati devono essere organizzati in un dizionario dove la chiave è il nome della categoria e il valore è una lista di tuple (nome_articolo, prezzo). Il menu deve offrire:
– (1) aggiungere un articolo specificando nome, prezzo e categoria; se la categoria non esiste deve essere creata automaticamente;
– (2) visualizzare tutti gli articoli raggruppati per categoria, mostrando ogni articolo con il suo prezzo;
– (3) calcolare e stampare il totale per ogni categoria e il totale complessivo della spesa;
– (4) cercare articoli che contengono una certa parola chiave nel nome utilizzando l’operatore in sulle stringhe e il metodo .find();
– (5) eliminare un articolo dato il suo nome, cercando nella categoria corretta e rimuovendolo con .remove();
– (6) visualizzare l’elenco di tutte le categorie disponibili utilizzando .keys() e stampare il numero di articoli per ciascuna;
– (0) uscire.
Il programma deve utilizzare un ciclo while, f-string, list comprehension e le funzioni sum(), len() e sorted().
6. Gestione iscritti a un evento — Scrivi un programma interattivo per gestire gli iscritti a un evento. Ogni partecipante deve essere rappresentato come un dizionario con chiavi "nome", "email" e una lista di "preferenze" (lista di stringhe, es. “cibo”, “musica”). I dati devono essere organizzati in un dizionario dove la chiave è l’email (stringa) e il valore è il dizionario del partecipante. Il menu deve offrire:
– (1) registrare un nuovo partecipante chiedendo nome, email e le sue preferenze separate da spazi;
– (2) visualizzare tutti gli iscritti con il loro nome, email e lista di preferenze;
– (3) calcolare e stampare gli eventi più popolari tra tutti gli iscritti, utilizzando un dizionario per contare le occorrenze di ogni preferenza;
– (4) trovare e stampare i partecipanti che condividono almeno una preferenza con un partecipante dato (ricerca per nome);
– (5) calcolare e stampare il numero totale di iscritti unici, utilizzando un set per eliminare le email duplicate;
– (6) visualizzare l’elenco di tutte le preferenze uniche tra tutti gli iscritti utilizzando un set;
– (7) eliminare un partecipante data la sua email utilizzando il metodo .pop() del dizionario;
– (0) uscire.
Il programma deve utilizzare un ciclo while, f-string, .items(), .keys(), .split() per le stringhe, set e operazioni insiemistiche (&, |).
