< Home
Stampa

Esercizi Python

Sommario

Introduzione

  1. Quali sono i principi di funzionamento di Python ? Elencane almeno 5.
  2. Quali sono i principali ambiti di utilizzo di Python?
  3. Quali sono le tre modalità di esecuzione del codice Python? Descrivi brevemente ciascuna.
  4. Come viene dichiarata una variabile in Python? Cosa cambia rispetto ad altri linguaggi?
  5. Quali sono le 4 strutture dati fondamentali di Python? Descrivi brevemente ciascuna con un esempio.
  6. Qual è la differenza tra if e while in Python? Come viene gestita l’indentazione?
  7. Cosa fa l’istruzione def in Python? Fornisci un esempio di funzione.
  8. Quali sono i punti di forza e quelli di debolezza di Python? Elencane almeno 3 per ciascuna categoria.
  9. Perché Python ha una comunità di programmatori così grande? E qual è il suo ruolo nell’intelligenza artificiale?

Fondamentali

  1. Scrivi un programma che dichiari variabili di tipo int, float, str e bool, assegnando a ciascuna un valore appropriato.
  2. Dato il valore x = 7 e y = 3, calcola e stampa a schermo il risultato di: somma, prodotto, sottrazione, divisione in virgola mobile, divisione intera, modulo (resto) e potenza.
  3. Scrivi un programma che chieda all’utente due numeri e stampi il risultato della loro divisione intera e del modulo (resto).
  4. Dato a = 10, scrivi le istruzioni per aggiornare a sommandogli 5, moltiplicandolo per 3 e sottraendogli 2, utilizzando le operazioni abbreviate.
  5. Scrivi un programma che chieda all’utente due numeri e stampi True se il primo è maggiore o uguale al secondo, False altrimenti.
  6. Dato che p = True e q = False, scrivi tre istruzioni che stampino il risultato di: p and q, p or q, e not p.
  7. Cosa stampa Python per ciascuno dei seguenti valori valutati come booleani? "", "Ciao", 0, 42, [], None.
  8. 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.”
  9. Scrivi un programma che chieda all’utente due valori e li stampi separati da un trattino (-) utilizzando il parametro sep di print.
  10. Scrivi un programma che chieda all’utente il proprio nome e stampi “Ciao [nome]” usando una f-string.
  11. 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.
  12. Scrivi un programma che chieda all’utente la base e l’altezza di un triangolo e stampi l’area calcolata con una f-string.
  13. Scrivi un programma che chieda all’utente un numero e stampi “Positivo” se maggiore di 0, “Negativo” se minore di 0, “Zero” altrimenti.
  14. Scrivi un programma che stampi i numeri da 0 a 9 utilizzando un ciclo while.
  15. 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

  1. Crea una lista chiamata mista che contenga un numero intero, una stringa e un’altra lista [10, 20].
  2. Data la lista numeri = [1, "a", True, None], scrivi le istruzioni per stamparne la lunghezza.
  3. Data la lista frutta = ["mela", "pera", "uva"], scrivi le istruzioni per stampare l’elemento “pera” usando l’indice.
  4. Data la lista numeri = [10, 20, 30, 40], scrivi le istruzioni per stampare 30 utilizzando un indice negativo.
  5. Data la lista numeri = [10, 20, 30, 40], scrivi le istruzioni per modificare l’elemento all’indice 0 assegnandogli il valore 99.
  6. 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).
  7. 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.
  8. Data la lista lettere = ['a', 'b', 'c', 'd'], scrivi le istruzioni per stampare una slice che vada dall’indice 1 fino al penultimo elemento.
  9. Data la lista lista = [1, 2, 3], scrivi le istruzioni per inserire il valore 0 all’inizio della lista usando insert.
  10. Data la lista lista = [1, 2], scrivi le istruzioni per aggiungere il valore 3 alla fine della lista usando append.
  11. Data la lista lista = [10, 20, 30], scrivi le istruzioni per eliminare l’elemento all’indice 1 usando del.
  12. Data la lista lista = [1, 2, 3], scrivi le istruzioni per rimuovere il valore 2 usando remove.
  13. Data la lista lista = [1, 2], scrivi le istruzioni per aggiungere [3, 4] alla fine della lista utilizzando l’assegnazione per slice.
  14. 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.
  15. Data la lista lista = [1, 2, 3], scrivi le istruzioni per invertire l’ordine degli elementi.
  16. Data la lista lista = [5, 2, 8, 1], scrivi le istruzioni per ordinarla in ordine crescente.
  17. Data la lista lista = ["a", "b"], scrivi le istruzioni per verificare se la stringa “c” è presente nella lista.
  18. Data la lista lista = [1, 2, 2, 3], scrivi le istruzioni per contare quante volte appare il numero 2.
  19. Date le liste lista1 = [1, 2] e lista2 = [3, 4], scrivi le istruzioni per creare una nuova lista che contenga tutti gli elementi di entrambe.
  20. Scrivi le istruzioni per creare una lista [5, 5, 5] utilizzando l’operatore di moltiplicazione sulle liste.
  21. Data la lista numeri = [10, 5, 20], scrivi le istruzioni per stampare il valore minimo, quello massimo e la somma degli elementi.
  22. Data la lista lista = ["a", "b", "c"], scrivi le istruzioni per trovare e stampare l’indice della prima occorrenza di “b”.
  23. Scrivi un ciclo for che stampi i numeri da 0 a 4 utilizzando la funzione range.
  24. Scrivi un ciclo for che stampi i numeri da 2 a 5 utilizzando la funzione range.
  25. Scrivi le istruzioni per creare una lista [0, 1, 2, 3, 4, 5] utilizzando range.
  26. Data la lista spese = [10, 20], scrivi un ciclo che utilizzi enumerate per stampare sia l’indice che il valore di ogni elemento.
  27. Data la lista annidata matrix = [[1, 2], [3, 4]], scrivi le istruzioni per accedere e stampare il valore 4.
  28. Data la lista annidata matrix = [[1, 2], [3, 4]], scrivi le istruzioni per modificare il valore 3 assegnandogli 9.
  29. Scrivi una list comprehension che crei la lista [2, 4, 6] partendo da range(1, 4) moltiplicando ogni elemento per 2.
  30. Scrivi una list comprehension che crei la lista [2, 4, 6] partendo da range(1, 7) mantenendo solo i numeri pari.
  31. Scrivi le istruzioni per creare una lista contenente il quadrato solo dei numeri pari compresi tra 1 e 10 usando una list comprehension.
  32. Crea una list comprehension che generi la lista [1, 4, 9, 16, 25] partendo da range(1, 6) elevando al quadrato ogni elemento.

Tuple

  1. Data una tupla coordinate = (45.07, 9.23) che rappresenta le coordinate di una città, utilizzare l’unpacking per assegnare la latitudine alla variabile lat e la longitudine alla variante lon. Stampare il risultato.
  2. Creare una tupla spese contenente (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 ciclo for con enumerate() per stampare ogni spesa con il suo indice, formattando l’importo a due decimali.
  3. Scrivere del codice che inverta i valori di due variabili a e b utilizzando l’unpacking delle tuple, senza utilizzare una variabile temporanea. Stampare i valori prima e dopo l’inversione.
  4. Data una tupla punteggi = (15, 20, 18, 22, 19), calcolare la media dei punteggi utilizzando la funzione sum() e stampare il risultato arrotondato a due decimali.
  5. Creare una tupla dati contenente 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 blocco try/except, spiegando perché l’operazione non è consentita.

Zip

  1. Dati due elenchi nomi = ["Anna", "Luca", "Giulia", "Marco"] e citta = ["Milano", "Roma", "Napoli", "Torino"], utilizzare zip() per creare una lista di coppie e stampare ogni coppia nel formato "Nome vive a Città".
  2. Dati due elenchi di lunghezza diversa: prodotti = ["penna", "quaderno", "gomma"] e prezzi = [1.5, 3.0], utilizzare zip() per accoppiarli e stampare le coppie. Spiegare quale elemento viene perso e perché.

Set

  1. Data la lista numeri = [1, 2, 2, 3, 4, 4, 5, 5, 5], convertirla in un set per rimuovere i duplicati e stampare il risultato. Convertire nuovamente il set in una lista ordinata e stamparla.
  2. Dati due set classA = {"Anna", "Luca", "Giulia", "Marco"} e classB = {"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).
  3. Creare un set chiamato ingredienti con 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.
  4. Dati i set numeri_pari = {2, 4, 6, 8, 10} e numeri_dispari = {1, 3, 5, 7, 9}, calcolare l’unione e l’intersezione tra i due insiemi. Spiegare il risultato dell’intersezione.
  5. Creare un frozenset chiamato costanti contenente i valori [3.14, 2.71, 1.61]. Tentare di aggiungere un nuovo elemento al frozenset e gestire l’errore con try/except, spiegando la differenza tra set e frozenset.

Stringhe

  1. Data la stringa frase = "Python è un linguaggio di programmazione", estrarre le parole "linguaggio" e "programmazione" e ristampare la stringa senza queste parole.
  2. 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.
  3. Data una lista di parole parole = ["ciao", "mondo", "python", "programmazione"], unire tutte le parole in una singola stringa separata da spazi e la stampi.
  4. Scrivere un ciclo che prenda una stringa parola inserita dall’utente e stampi ogni carattere su una riga diversa, insieme al suo indice.
  5. Data la stringa testo = "banana", contare quante volte appare la lettera "a" e stampare il risultato.
  6. Scrivere un programma che prenda una frase e verifichi se contiene la parola "Python" utilizzando l’operatore in. Se presente, stampare la posizione della prima occorrenza.
  7. Data la stringa frase = "il gatto gioca nel giardino", sostituire tutte le occorrenze di "gatto" con "cane" e stampare la frase modificata.
  8. 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().
  9. Data la stringa codice = "ABC-1234-XYZ", utilizzare lo slicing per estrarre la parte numerica "1234" (escludendo i trattini) e stampare il risultato.
  10. Scrivere un programma che prenda una stringa testo e verifichi se è un palindromo (si legge uguale al contrario), ignorando maiuscole e spazi. Stampare True o False.

Dizionari

  1. Creare un dizionario studente con chiavi "nome", "età" e "voti" (dove voti è una lista di interi). Stampare il numero di chiavi del dizionario con len().
  2. Dati due elenchi nomi = ["Mario", "Luca", "Anna"] e voti = [18, 20, 15], creare un dizionario che associ ogni nome al proprio voto utilizzando zip() e stampare tutte le coppie chiave-valore con .items().
  3. 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.

  1. 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.
  2. Dati i dizionari persona1 = {"nome": "Anna", "età": 25} e persona2 = {"nome": "Luca", "età": 30}, creare un nuovo dizionario rubrica che associ a ciascun nome il proprio dizionario di informazioni. Stampare l’età di "Luca" utilizzando .get() con un valore di default "sconosciuto".
  3. 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.
  4. Creare un dizionario utenti con 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.
  5. 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.
  6. Dati due dizionari d1 = {"a": 1, "b": 2} e d2 = {"b": 3, "c": 4}, unirli in un unico dizionario d_unione. Se una chiave è presente in entrambi, il valore del secondo dizionario deve sovrascrivere quello del primo. Stampare il risultato.
  7. Creare un dizionario voti_esame con 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

  1. 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:

    Cm+1=Cm∗(1+t12)−RC_{m+1} = C_m * (1+\frac{t}{12}) – R

    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:

    R=C⋅tm(1+tm)m(1+tm)m−1R = C \cdot \frac{t_m(1+t_m)^m}{(1+t_m)^m – 1}

    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 (&, |).