Progetti
🏆 Progetti per Modulo — Corso Python
Section titled “🏆 Progetti per Modulo — Corso Python”Generato da: module-project-generator Basato su: Manuale Python per principianti (freeCodeCamp) — 12 moduli
Modulo 1 — Introduzione a Python
Section titled “Modulo 1 — Introduzione a Python”Progetto 1.1: Biglietto da Visita Interattivo
Section titled “Progetto 1.1: Biglietto da Visita Interattivo”Difficoltà: Principiante
Obiettivi: print(), variabili, commenti, esecuzione script
Storie utente:
- L’utente avvia lo script e vede un biglietto da visita formattato
- Il biglietto mostra: nome, cognome, professione, email, telefono
- Il biglietto è incorniciato con caratteri
*o= - Usa variabili per ogni dato
- Aggiungi commenti che spiegano ogni sezione
Requisiti tecnici:
- Solo print() e variabili
- Output formattato con f-strings
- Almeno 5 commenti nel codice
Esempio output:
====================================* Nome: Mario ** Cognome: Rossi ** Professione: Studente ITIS ** Email: mario.rossi@email.com *====================================Progetto 1.2: Indovinello delle Variabili
Section titled “Progetto 1.2: Indovinello delle Variabili”Difficoltà: Principiante
Obiettivi: variabili, assegnazione multipla, type(), print(), commenti
Storie utente:
- Lo script dichiara 5 variabili di tipo diverso
- Per ogni variabile stampa: valore, tipo con type(), e una descrizione
- Usa assegnazione multipla per almeno 2 variabili
- Alla fine mostra quante variabili sono state dichiarate
Requisiti tecnici:
- Almeno 5 tipi diversi (int, float, str, bool, None)
- Assegnazione multipla
- Commenti che spiegano ogni tipo
Modulo 2 — Tipi di Dato e Variabili
Section titled “Modulo 2 — Tipi di Dato e Variabili”Progetto 2.1: Convertitore Universale
Section titled “Progetto 2.1: Convertitore Universale”Difficoltà: Principiante
Obiettivi: int, float, casting, costanti, type()
Storie utente:
- L’utente inserisce un valore numerico
- Il programma lo converte in: intero, float, stringa, booleano
- Mostra il tipo originale e il tipo convertito
- Gestisci costanti per conversioni (es. PI per gradi→radianti)
- Aggiungi un menu a scelta della conversione
Requisiti tecnici:
- Casting tra tutti i tipi numerici
- Costanti in MAIUSCOLO
- Gestione errori base (se l’input non è numerico)
Progetto 2.2: Sistema di Voti con Enum
Section titled “Progetto 2.2: Sistema di Voti con Enum”Difficoltà: Principiante
Obiettivi: enum, numeri, casting, costanti
Storie utente:
- Definisci un enum
Votocon valori: INSUFFICIENTE=0, SUFFICIENTE=6, BUONO=7, DISTINTO=8, OTTIMO=9, ECCELLENTE=10 - Chiedi all’utente un numero (0-10)
- Mostra il voto in lettere corrispondente
- Calcola la media tra più voti inseriti
- Usa costanti per i range di valutazione
Requisiti tecnici:
- Enum con .name e .value
- Ciclo per inserimento multiplo
- Media calcolata come float
Modulo 3 — Stringhe, Booleani e Input
Section titled “Modulo 3 — Stringhe, Booleani e Input”Progetto 3.1: Analizzatore di Testo
Section titled “Progetto 3.1: Analizzatore di Testo”Difficoltà: Principiante
Obiettivi: stringhe, slicing, metodi stringa, f-strings, booleani
Storie utente:
- L’utente inserisce una frase
- Il programma mostra: lunghezza, prima/ultima lettera, versione MAIUSCOLA/minuscola
- Conta quante vocali e consonanti ci sono
- Dice se la frase è palindroma (True/False)
- Mostra la frase al contrario
- Conta quante parole ci sono
Requisiti tecnici:
- Slicing per invertire la stringa
- Metodi .upper(), .lower(), .split()
- Almeno 3 valori booleani nel report
- f-strings per formattare l’output
Progetto 3.2: Validatore di Password
Section titled “Progetto 3.2: Validatore di Password”Difficoltà: Principiante
Obiettivi: stringhe, booleani, input, operatori logici
Storie utente:
- L’utente inserisce una password
- Il programma verifica che:
- Sia lunga almeno 8 caratteri
- Contenga almeno un numero
- Contenga almeno una lettera maiuscola
- Contenga almeno un carattere speciale (!@#$%&)
- Mostra un report con tutti i controlli: ✅ o ❌
- Solo se TUTTI i controlli passano → “Password sicura!”
Requisiti tecnici:
- Operatori
inenot in - Booleani con
and/or - Ciclo per far riprovare l’utente
Esempio output:
=== VALIDATORE PASSWORD ===Inserisci password: Ciao123
✅ Lunghezza ≥ 8: NO✅ Contiene numero: SI✅ Contiene maiuscola: SI✅ Carattere speciale: NO
Risultato: PASSWORD DEBOLE ❌Modulo 4 — Operatori e Controllo di Flusso
Section titled “Modulo 4 — Operatori e Controllo di Flusso”Progetto 4.1: Gioco del Numero Segreto
Section titled “Progetto 4.1: Gioco del Numero Segreto”Difficoltà: Principiante
Obiettivi: if/elif/else, loop, while, break, random, operatori
Storie utente:
- Il computer genera un numero casuale tra 1 e 100
- L’utente ha 7 tentativi per indovinarlo
- Dopo ogni tentativo: “Troppo alto”, “Troppo basso” o “Hai indovinato!”
- A ogni tentativo mostra quanti tentativi rimangono
- Se finisci i tentativi, mostra il numero segreto
- Usa operatore ternario per messaggi finali
Requisiti tecnici:
- random.randint() per il numero segreto
- while per il loop dei tentativi
- break quando indovina
- Operatore ternario per “Hai vinto!” / “Hai perso!”
Progetto 4.2: Calcolatrice con Menu e Cronologia
Section titled “Progetto 4.2: Calcolatrice con Menu e Cronologia”Difficoltà: Principiante
Obiettivi: if/elif, match/case, loop, operatori, input
Storie utente:
- Mostra un menu: 1. Somma 2. Sottrai 3. Moltiplica 4. Dividi 5. Cronologia 6. Esci
- Chiedi due numeri all’utente
- Esegui l’operazione scelta e mostra il risultato
- Ogni operazione viene salvata in una lista di cronologia
- Opzione 5 mostra tutte le operazioni fatte
- Opzione 6 esce dal programma
- Gestisci divisione per zero con if
Requisiti tecnici:
- match/case per il menu (Python 3.10+)
- Lista per la cronologia
- Loop while infinito finché non si sceglie “Esci”
Modulo 5 — Liste e Tuple
Section titled “Modulo 5 — Liste e Tuple”Progetto 5.1: Lista della Spesa Intelligente
Section titled “Progetto 5.1: Lista della Spesa Intelligente”Difficoltà: Principiante
Obiettivi: liste, metodi liste, tuple, slicing
Storie utente:
- L’utente può: aggiungere, rimuovere, visualizzare, ordinare, svuotare la lista
- Ogni elemento è una tupla (prodotto, quantità, categoria)
- Mostra la lista raggruppata per categoria
- Usa slicing per mostrare solo i primi N elementi
- Salva la lista in un file di testo
Requisiti tecnici:
- Lista di tuple come struttura dati
- .append(), .remove(), .sort(), .pop()
- Slicing per visualizzazione parziale
- Ciclo per iterare il menu
Progetto 5.2: Analisi Numeri con Comprensioni
Section titled “Progetto 5.2: Analisi Numeri con Comprensioni”Difficoltà: Principiante-Intermedio
Obiettivi: liste, comprensioni di lista, slicing, tuple
Storie utente:
- L’utente inserisce 10 numeri interi
- Il programma calcola con comprensioni di lista:
- Quadrati di ogni numero
- Solo i numeri pari
- Solo i numeri dispari
- Numeri divisibili per 3
- Numeri negativi (se presenti)
- Trova il numero max, min e la media (con tuple)
- Mostra la lista originale e quella invertita
Requisiti tecnici:
- Almeno 5 comprensioni di lista diverse
- Tuple per risultati multipli (min, max, media)
- Slicing per invertire [::-1]
Modulo 6 — Dizionari e Set
Section titled “Modulo 6 — Dizionari e Set”Progetto 6.1: Rubrica Telefonica
Section titled “Progetto 6.1: Rubrica Telefonica”Difficoltà: Principiante-Intermedio
Obiettivi: dizionari, .keys(), .values(), .items(), .get()
Storie utente:
- Menu: 1. Aggiungi contatto 2. Cerca contatto 3. Elimina contatto 4. Tutti i contatti 5. Esci
- Ogni contatto ha: nome, telefono, email (usa dizionario annidato)
- Cerca per nome (case-insensitive) o per telefono
- Mostra tutti i contatti ordinati alfabeticamente
- Usa .get() per non generare errori se il contatto non esiste
Requisiti tecnici:
- Dizionario di dizionari
- .items() per iterare
- .get() con valore di default
- sorted() per ordinamento
Progetto 6.2: Gestione Studenti con Set
Section titled “Progetto 6.2: Gestione Studenti con Set”Difficoltà: Principiante-Intermedio
Obiettivi: set, unione, intersezione, differenza, dizionari
Storie utente:
- Hai 3 classi di studenti (set con nomi)
- Mostra: studenti unici di tutte le classi (unione)
- Mostra: studenti in comune tra due classi (intersezione)
- Mostra: studenti in una classe ma non nell’altra (differenza)
- Aggiungi voti con dizionario (nome → voto)
- Calcola la media della classe
Requisiti tecnici:
- Set con |, &, -, ^
- Dizionario per voto degli studenti
- Iterazione su set e dict
Modulo 7 — Funzioni (Parte 1)
Section titled “Modulo 7 — Funzioni (Parte 1)”Progetto 7.1: Biblioteca di Funzioni Matematiche
Section titled “Progetto 7.1: Biblioteca di Funzioni Matematiche”Difficoltà: Intermedio
Obiettivi: funzioni, parametri, return, lambda, ricorsione
Storie utente:
- Crea funzioni separate per:
fattoriale(n)— ricorsivafibonacci(n)— ricorsivae_primo(n)— True/Falsesomma_numeri(*args)— numero variabile parametri
- Usa lambda per ordinare una lista di risultati
- Menu per scegliere quale funzione testare
- Usa valori di default nei parametri
Requisiti tecnici:
- Almeno 1 funzione ricorsiva (fattoriale)
- *args per parametri variabili
- Lambda per ordinamento
- Valori di default
Progetto 7.2: Filtro e Mappa con Lambda
Section titled “Progetto 7.2: Filtro e Mappa con Lambda”Difficoltà: Intermedio
Obiettivi: lambda, map(), filter(), sorted(), funzioni
Storie utente:
- Data una lista di numeri interi casuali:
- Filtra solo i numeri pari (filter + lambda)
- Calcola il quadrato di ognuno (map + lambda)
- Ordina per cifra delle unità (sorted + lambda)
- Raggruppa in pari e dispari
- Stessa cosa con una lista di stringhe (lunghezza, iniziale, ecc.)
- Mostra i risultati prima e dopo ogni operazione
Requisiti tecnici:
- filter() con lambda
- map() con lambda
- sorted() con key=lambda
- Almeno 4 lambda diverse
Modulo 8 — Programmazione a Oggetti
Section titled “Modulo 8 — Programmazione a Oggetti”Progetto 8.1: Sistema Bancario
Section titled “Progetto 8.1: Sistema Bancario”Difficoltà: Intermedio
Obiettivi: classi, init, self, metodi, attributi di classe/istanza
Storie utente:
- Classe
ContoBancariocon:- titolare, saldo, numero_conto (auto-generato)
deposita(importo)— aggiunge soldipreleva(importo)— toglie soldi (se saldo sufficiente)trasferisci(destinazione, importo)— trasferisce tra contimostra_dettagli()— stampa info complete
- Attributo di classe:
tasso_interesse - Metodo di classe:
modifica_tasso(nuovo_tasso) - Controlla saldo prima di ogni prelievo
Requisiti tecnici:
- Classe con init e self
- Attributi di istanza e di classe
- Metodi di istanza
- Gestione errori con if/else
Progetto 8.2: Gioco con Personaggi
Section titled “Progetto 8.2: Gioco con Personaggi”Difficoltà: Intermedio
Obiettivi: classi, decoratori, closure
Storie utente:
- Classe
Personaggiocon: nome, hp, attacco, difesa - Sottoclassi:
Guerriero(più hp),Mago(più attacco),Arciere(più velocità) - Ogni personaggio ha
attacca(nemico)che calcola danno - Usa un decoratore
@log_combattimentoche stampa ogni azione - Usa una closure per creare
moltiplicatore_danno(fattore) - Ciclo di combattimento tra due personaggi
Requisiti tecnici:
- Classi base e sottoclassi
- Decoratore custom
- Closure per modificatori di danno
- Loop di gioco
Modulo 9 — OOP Avanzata
Section titled “Modulo 9 — OOP Avanzata”Progetto 9.1: Catalogo Prodotti con Polimorfismo
Section titled “Progetto 9.1: Catalogo Prodotti con Polimorfismo”Difficoltà: Intermedio-Avanzato
Obiettivi: polimorfismo, overloading operatori, docstring, type hints
Storie utente:
- Classe base
Prodottocon str, repr, eq - Sottoclassi:
Libro(autore, pagine),Elettronica(garanzia_mesi),Abbigliamento(taglia) - Overload di add per sommare prezzi di due prodotti
- Overload di lt per ordinare per prezzo
- Polimorfismo:
scheda_prodotto()restituisce info specifiche per ogni tipo - Type hints su tutti i metodi
- Docstring completa per ogni classe/metodo
Requisiti tecnici:
- str, eq, lt, add
- Polimorfismo con metodo comune
- Type hints (from typing import …)
- Docstring in stile PEP257
Progetto 9.2: Inspector di Oggetti
Section titled “Progetto 9.2: Inspector di Oggetti”Difficoltà: Intermedio
Obiettivi: introspezione, dir(), type(), isinstance(), hasattr(), getattr()
Storie utente:
- Crea una funzione
inspetta(oggetto)che mostra:- Tipo dell’oggetto
- Lista di tutti gli attributi e metodi (dir)
- Solo i metodi (callable)
- Solo gli attributi (non callable)
- Valore di attributi specifici
- Testala con: int, str, list, dict, e una classe custom
- Usa isinstance() per dire se è un tipo specifico
Requisiti tecnici:
- dir(), type(), isinstance()
- hasattr() e getattr()
- callable() per distinguere metodi da attributi
Modulo 10 — Moduli, Libreria Standard, pip
Section titled “Modulo 10 — Moduli, Libreria Standard, pip”Progetto 10.1: Generatore di Report JSON
Section titled “Progetto 10.1: Generatore di Report JSON”Difficoltà: Intermedio
Obiettivi: moduli, json, datetime, os, with
Storie utente:
- Crea un modulo
report_generator.py - Funzioni:
crea_report(nome, dati)→ crea file .json con timestampleggi_report(nome_file)→ legge e stampa il reportlist_report(cartella)→ usa os per listare i file .jsonelimina_report(nome_file)→ cancella un report
- Ogni report include: data creazione, autore, titolo, contenuto
- Usa with per salvare/caricare file
- Gestisci file non trovati
Requisiti tecnici:
- Modulo separato (file .py)
- json.dumps() con indent=2
- datetime.now().isoformat()
- os.listdir(), os.path.exists()
- with open()
Progetto 10.2: Task Manager (versione base)
Section titled “Progetto 10.2: Task Manager (versione base)”Difficoltà: Intermedio
Obiettivi: venv, pip, requests, requirements.txt
Storie utente:
- Crea un ambiente virtuale per il progetto
- Installa
requestsvia pip - Crea requirements.txt con pip freeze
- Il programma prende dati da un’API pubblica (es. JSONPlaceholder)
- Salva i dati in un file JSON locale
- Mostra statistiche sui dati ottenuti
Requisiti tecnici:
- python -m venv
- pip install requests
- pip freeze > requirements.txt
- requests.get() per chiamata API
- Salvataggio JSON
Modulo 11 — Gestione Errori e CLI
Section titled “Modulo 11 — Gestione Errori e CLI”Progetto 11.1: Calcolatrice Robusta con CLI
Section titled “Progetto 11.1: Calcolatrice Robusta con CLI”Difficoltà: Intermedio-Avanzato
Obiettivi: eccezioni, try/except/else/finally, raise, argparse
Storie utente:
- Usa argparse per accettare:
--a NUM --b NUM --op OPERATORE - Operatori supportati: add, sub, mul, div, pow
- Gestisci TUTTE le eccezioni:
- ValueError se gli argomenti non sono numeri
- ZeroDivisionError se b=0 e op=div
- ValueError personalizzato se operatore sconosciuto
- finally stampa sempre “Operazione completata”
- Se —verbose mostra input e output dettagliati
Esempio:
python calcolatrice.py --a 10 --b 0 --op div --verbose# Errore: divisione per zero!# Operazione completataRequisiti tecnici:
- argparse con tipi e scelte
- try/except/else/finally
- raise per errori personalizzati
- Verbose mode
Progetto 11.2: Debug Detective
Section titled “Progetto 11.2: Debug Detective”Difficoltà: Intermedio
Obiettivi: debugging, logging, pdb, eccezioni
Storie utente:
- Un programma che INTENZIONALMENTE contiene 5 bug
- Lo studente deve trovarli e fixarli usando:
- print debugging (commenti # DEBUG: …)
- logging a file (logging.basicConfig)
- pdb.set_trace() per ispezionare variabili
- Ogni bug fixato va documentato con un commento
- Il programma finale deve funzionare correttamente
Bug da inserire:
- Divisione per zero
- Indice lista fuori range
- Variabile non definita
- Type mismatch
- Loop infinito (condizione sbagliata)
Requisiti tecnici:
- logging con livelli (DEBUG, INFO, ERROR)
- pdb.set_trace() in punti strategici
- Gestione eccezioni mirata
Modulo 12 — Progetto Finale
Section titled “Modulo 12 — Progetto Finale”Progetto 12.1: E-Commerce CLI Completo
Section titled “Progetto 12.1: E-Commerce CLI Completo”Difficoltà: Avanzato
Obiettivi: TUTTI i concetti del corso integrati
Storie utente:
- Gestione catalogo: Aggiungi, rimuovi, modifica, lista prodotti
- Carrello: Aggiungi/rimuovi prodotti, vedi totale
- Utenti: Registrazione e login (salvati su file)
- Ordini: Creazione ordine, cronologia ordini
- Persistenza: Tutti i dati in file JSON
- CLI: Argparse per tutti i comandi
Struttura modulare:
ecommerce/├── main.py ← entry point (argparse)├── models.py ← classi Prodotto, Utente, Ordine├── manager.py ← classe EcommerceManager├── storage.py ← carica/salva JSON├── utils.py ← funzioni di utilità└── requirements.txt ← dipendenzeComandi CLI:
python main.py prodotti listpython main.py prodotti add --nome "Mouse" --prezzo 25.99python main.py carrello add --prodotto-id 1 --quantita 2python main.py carrello showpython main.py ordini creapython main.py ordini storico --utente-id 1Requisiti tecnici:
- OOP con classi multiple
- Moduli separati
- Persistenza JSON
- argparse CLI
- Gestione eccezioni
- PEP8
- Type hints
Progetto 12.2: Analizzatore di File di Log
Section titled “Progetto 12.2: Analizzatore di File di Log”Difficoltà: Avanzato
Obiettivi: TUTTI i concetti: regex, file I/O, datetime, analisi dati
Storie utente:
- Carica un file di log (formato Apache/nginx o custom)
- Funzionalità:
- Conta righe totali, errori, warning, info
- Trova tutti gli IP unici
- Trova le ore di picco (quante richieste per ora)
- Filtra per livello (ERROR, WARNING, INFO)
- Esporta statistiche in JSON
- Genera report di riepilogo
Esempio formato log:
2026-06-24 10:15:30 ERROR 192.168.1.1 - Connection timeout2026-06-24 10:16:45 INFO 10.0.0.2 - User login successful2026-06-24 10:17:00 WARNING 192.168.1.1 - High memory usageComandi CLI:
python log_analyzer.py --file server.log --statspython log_analyzer.py --file server.log --livello ERRORpython log_analyzer.py --file server.log --export report.jsonpython log_analyzer.py --file server.log --ore-piccoRequisiti tecnici:
- re (regex) per parsing log
- datetime per analisi temporale
- collections.Counter per conteggi
- json per esportazione
- argparse per CLI
- OOP per organizzazione