Skip to content

Progetto Finale

Basato su: Manuale Python per principianti (freeCodeCamp) — 45 capitoli


  • ✅ Revisionare tutti i concetti del corso
  • ✅ Realizzare un progetto Python completo
  • ✅ Prepararsi ai prossimi passi (web, data science, automazione)

Settimana 1: Introduzione, installazione, fondamenti
Settimana 2: Tipi di dato, numeri, costanti, enum
Settimana 3: Stringhe, booleani, input utente
Settimana 4: Operatori, if/else, loop
Settimana 5: Liste, tuple, comprensioni
Settimana 6: Dizionari, set
Settimana 7: Funzioni, scope, lambda, ricorsione
Settimana 8: Closure, decoratori, classi
Settimana 9: Polimorfismo, overloading, docstring, type hints
Settimana 10: Moduli, libreria standard, pip, venv, PEP8
Settimana 11: Eccezioni, with, debugging, CLI
Settimana 12: PROGETTO FINALE!
  1. Python è compilato o interpretato?
  2. Cosa significa “dinamicamente tipizzato”?
  3. Differenza tra lista e tupla?
  4. Differenza tra lista e set?
  5. Cosa fa [x**2 for x in range(10)]?
  6. Cosa significa LEGB nello scope?
  7. A cosa serve un decoratore?
  8. Cosa fa __str__ in una classe?
  9. Differenza tra == e is?
  10. Come si crea un ambiente virtuale?

Un’applicazione da riga di comando per gestire task, completa di persistenza su file JSON.

"""
TASK MANAGER CLI
GESTISCI I TUOI COMPITI DAL TERMINALE!
Comandi:
- add "titolo" Aggiunge un nuovo task
- list Mostra tutti i task
- done <id> Segna task come completato
- delete <id> Elimina un task
- search "testo" Cerca task per testo
- stats Mostra statistiche
Requisiti tecnici:
✅ OOP: classe Task e TaskManager
✅ eccezioni: input non valido, file non trovato
✅ JSON: caricare/salvare i task
✅ datetime: data di creazione e scadenza
✅ argparse: CLI professionale
✅ PEP8: codice pulito
"""
task_manager/
├── task_manager.py ← entry point (argparse CLI)
├── task.py ← classe Task
├── manager.py ← classe TaskManager
├── storage.py ← carica/salva JSON
└── requirements.txt ← dipendenze (se necessarie)
from dataclasses import dataclass
from datetime import datetime
from typing import Optional
@dataclass
class Task:
id: int
title: str
created_at: datetime
completed: bool = False
completed_at: Optional[datetime] = None
def to_dict(self):
return {
"id": self.id,
"title": self.title,
"created_at": self.created_at.isoformat(),
"completed": self.completed,
"completed_at": self.completed_at.isoformat() if self.completed_at else None
}
@classmethod
def from_dict(cls, data):
return cls(
id=data["id"],
title=data["title"],
created_at=datetime.fromisoformat(data["created_at"]),
completed=data["completed"],
completed_at=datetime.fromisoformat(data["completed_at"]) if data.get("completed_at") else None
)
FunzionalitàCosa si usaSettimana
Parse comandi CLIargparse11
Task come classeOOP, dataclass8
Salvare/caricarejson, with10-11
Date di creazionedatetime10
Cercare taskloop, stringhe4-5
Statisticheliste, comprensioni5-6
Gestione erroritry/except11
Codice pulitoPEP810
Moduli separatimoduli Python10
Terminal window
# Aggiungere task
python task_manager.py add "Studiare Python"
python task_manager.py add "Fare esercizi"
python task_manager.py add "Preparare progetto"
# Listare
python task_manager.py list
# Completare
python task_manager.py done 1
# Cercare
python task_manager.py search "esercizi"
# Statistiche
python task_manager.py stats
# Eliminare
python task_manager.py delete 3

PercorsoCosa studiarePrimo passo
🌐 Web DevelopmentFlask, Django, FastAPICreare un blog con Flask
📊 Data ScienceNumPy, Pandas, MatplotlibAnalizzare un dataset CSV
🤖 Machine Learningscikit-learn, TensorFlow, PyTorchClassificatore di immagini
⚙️ AutomazioneSelenium, requests, BeautifulSoupWeb scraper avanzato
🎮 Game DevPygameUn semplice platformer
🐳 DevOpsDocker, CI/CDContainerizzare un’app Python
  • Completare il progetto finale
  • Rivedere le sezioni del manuale dove ci sono dubbi
  • Pubblicare il progetto su GitHub

✅ 45 capitoli del manuale Python coperti
✅ 60+ ore di lezione
✅ 30+ esercizi pratici
✅ 1 progetto finale completo
✅ Capacità di scrivere Python in autonomia

Congratulazioni! 🎉 Sei ora uno Junior Python Developer!

Il prossimo passo dipende da te: scegli un percorso specialistico e inizia a costruire progetti veri. Buon coding! 🐍