HTML CSS JAVASCRIPT SQL MYSQL PYTHON JAVA PHP C C++ C# PACKET TRACER CYBERSECURITY REACTTYPESCRIPTNODE.JSGIT & GITHUBDATA SCIENCEBOOTSTRAPGOKOTLINJQUERYDJANGOVUEANGULAR MONGODB POSTGRESQL SASS NUMPY PANDAS SCIPY DSA RUST SWIFT BASHXMLW3.CSSANGULARJSAIAWSPROGRAMMAZIONEEXCEL WORD POWERPOINT
Corso gratuito · Interattivo

Corso di Python in italiano

Il tutorial completo per imparare Python da zero: dalla sintassi di base alla programmazione a oggetti. Ogni argomento ha esempi che puoi eseguire direttamente nel browser con il pulsante “Provalo tu”.

Introduzione a Python

Python è un linguaggio di programmazione ad alto livello, interpretato e general-purpose, creato da Guido van Rossum e rilasciato nel 1991. È oggi uno dei linguaggi più usati e amati al mondo grazie a una sintassi pulita, leggibile e vicina all'inglese, che lo rende perfetto per chi inizia a programmare da zero.

Con Python puoi fare praticamente di tutto: sviluppo web (Django, Flask), analisi dei dati e data science (pandas, NumPy), intelligenza artificiale e machine learning (TensorFlow, PyTorch), automazione di compiti ripetitivi, scripting di sistema, scraping, videogiochi e molto altro. È un linguaggio multi-paradigma: supporta la programmazione procedurale, a oggetti e funzionale.

Perché imparare Python?

  • Facile da leggere e scrivere: usa l'indentazione al posto delle parentesi graffe.
  • Versatile: dallo script di poche righe al software complesso.
  • Ricco di librerie: una vastissima libreria standard più migliaia di pacchetti esterni.
  • Richiestissimo nel mondo del lavoro: uno dei linguaggi più ricercati dalle aziende.
💡 In questo corso puoi eseguire Python reale direttamente nel browser: clicca su Provalo tu ▶ in ogni esempio, poi premi ▶ Esegui. Non devi installare nulla.
Esempio

Installare Python (Get Started)

Per eseguire Python sul tuo computer devi installare l'interprete, scaricabile gratuitamente dal sito ufficiale python.org. Molti sistemi Linux e macOS hanno già Python preinstallato. Per verificare se è presente, apri il terminale e digita:

Terminale

Come si esegue un programma Python?

Un programma Python si salva in un file con estensione .py (ad esempio programma.py) e si esegue dal terminale con il comando python programma.py. In alternativa puoi usare un editor come VS Code, PyCharm o l'interprete interattivo (la “shell” di Python). In questo corso usiamo direttamente il browser.

La sintassi di Python

La caratteristica più distintiva di Python è l'indentazione: invece di usare parentesi graffe { } per delimitare i blocchi di codice, Python usa gli spazi (la convenzione è di 4 spazi). Un'indentazione sbagliata genera un errore IndentationError.

Blocchi e indentazione

Tutto ciò che “appartiene” a un'istruzione (un if, un ciclo, una funzione) deve essere indentato allo stesso livello.

Esempio
⚠️ Mantieni sempre coerente l'indentazione: non mischiare spazi e tabulazioni. La convenzione ufficiale (PEP 8) raccomanda 4 spazi.

Output: la funzione print()

La funzione print() è il modo principale per mostrare informazioni a schermo. Può stampare testo, numeri, variabili e più valori separati da virgola (che vengono uniti da uno spazio).

Parametri utili: sep ed end

  • sep definisce il separatore fra i valori (default: spazio).
  • end definisce cosa stampare alla fine (default: a capo \n).
Esempio

I commenti

I commenti servono a spiegare il codice e vengono ignorati dall'interprete. In Python un commento su singola riga inizia con il cancelletto #. Per i commenti su più righe si usano spesso le stringhe su tripli apici, anche se tecnicamente sono stringhe (docstring).

Esempio

Le variabili

Una variabile è un contenitore con un nome a cui associamo un valore. In Python non serve dichiarare il tipo: viene dedotto automaticamente dal valore assegnato (tipizzazione dinamica). L'assegnazione si fa con il simbolo =.

Regole per i nomi delle variabili

  • Possono contenere lettere, numeri e underscore _.
  • Non possono iniziare con un numero.
  • Sono case-sensitive: nome e Nome sono diverse.
Esempio

I tipi di dato

Ogni valore in Python ha un tipo. La funzione type() permette di scoprirlo. I tipi fondamentali sono:

CategoriaTipoEsempio
Testostr"ciao"
Numeriint, float, complex10, 3.14, 2j
Sequenzelist, tuple, range[1,2], (1,2)
Mappedict{"a": 1}
Insiemiset, frozenset{1, 2, 3}
BooleaniboolTrue, False
NulloNoneTypeNone
Esempio

I numeri

Python distingue tre tipi numerici: int (interi), float (numeri con la virgola) e complex (numeri complessi). Le operazioni aritmetiche di base funzionano come ci si aspetta.

Esempio

Il casting (conversione di tipo)

Il casting converte un valore da un tipo a un altro usando le funzioni costruttrici int(), float() e str(). È fondamentale, ad esempio, quando leggiamo input dall'utente (sempre testo) e dobbiamo trasformarlo in numero.

Esempio

Le stringhe

Le stringhe sono sequenze di caratteri racchiuse tra apici singoli '...' o doppi "...". Sono immutabili: non possono essere modificate dopo la creazione, ma puoi crearne di nuove.

Slicing e indici

Puoi accedere ai caratteri con l'indice (parte da 0) e ottenere “fette” con lo slicing [inizio:fine].

Metodi utili

MetodoCosa fa
upper() / lower()Maiuscolo / minuscolo
strip()Rimuove spazi ai lati
replace(a, b)Sostituisce a con b
split(sep)Divide in una lista
len()Lunghezza della stringa
Esempio

I booleani

Un valore booleano può essere solo True (vero) o False (falso). I booleani nascono spesso dal confronto fra valori e sono alla base delle decisioni nel codice.

In Python molti valori sono considerati “falsi” in un contesto booleano: 0, "" (stringa vuota), [] (lista vuota), None. Tutto il resto è “vero”.

Esempio

Gli operatori

Gli operatori eseguono operazioni su valori e variabili. Python offre diverse categorie:

  • Aritmetici: + - * / // % **
  • Di confronto: == != > < >= <=
  • Logici: and, or, not
  • Di assegnazione: = += -= *= /=
  • Di appartenenza: in, not in
Esempio

Le liste

Una lista è una collezione ordinata e modificabile di elementi, racchiusa tra parentesi quadre [ ]. Può contenere valori di tipo diverso e ammette duplicati.

Metodi principali

MetodoCosa fa
append(x)Aggiunge x in fondo
insert(i, x)Inserisce x in posizione i
remove(x)Rimuove il primo x
pop(i)Estrae l'elemento in posizione i
sort()Ordina la lista
Esempio

Le tuple

Una tupla è come una lista ma immutabile: una volta creata non può essere modificata. Si scrive con le parentesi tonde ( ). Si usa per dati che non devono cambiare, come coordinate o costanti.

Esempio

I set (insiemi)

Un set è una collezione non ordinata e senza duplicati, scritta tra parentesi graffe { }. È utile per eliminare i doppioni e per le operazioni insiemistiche (unione, intersezione, differenza).

Esempio

I dizionari

Un dizionario associa una chiave a un valore: {chiave: valore}. È ordinato (da Python 3.7), modificabile e non ammette chiavi duplicate. È la struttura ideale per rappresentare “oggetti” con proprietà.

Esempio

Le condizioni: if, elif, else

Le istruzioni condizionali eseguono codice diverso a seconda che una condizione sia vera o falsa. Si usano if (se), elif (altrimenti se) ed else (altrimenti). Ricorda l'indentazione!

Esempio

Il costrutto match (switch)

Da Python 3.10 esiste match ... case, simile allo switch di altri linguaggi: confronta un valore con più “casi” ed esegue il blocco corrispondente. Il caso _ fa da default.

Esempio

Il ciclo while

Il ciclo while ripete un blocco di codice finché una condizione resta vera. Attenzione a modificare la condizione all'interno, altrimenti rischi un ciclo infinito. Le parole chiave break (esci) e continue (salta al prossimo giro) controllano il flusso.

Esempio

Il ciclo for

Il ciclo for scorre gli elementi di una sequenza (lista, stringa, range, dizionario...). Combinato con range() permette di ripetere un'azione un numero preciso di volte.

Esempio

Le funzioni

Una funzione è un blocco di codice riutilizzabile che svolge un compito. Si definisce con def, può ricevere parametri e restituire un valore con return. Le funzioni rendono il codice ordinato e DRY (Don't Repeat Yourself).

Parametri di default e *args

Puoi assegnare valori predefiniti ai parametri e accettare un numero variabile di argomenti con *args.

Esempio

La funzione range()

range() genera una sequenza di numeri, molto usata nei cicli. Accetta fino a tre argomenti: range(stop), range(start, stop) e range(start, stop, step). Il valore stop è escluso.

Esempio

Gli array

In Python le liste svolgono il ruolo che in altri linguaggi hanno gli array. Esiste anche un modulo array per array tipizzati ed efficienti, e per il calcolo numerico si usa la libreria esterna NumPy. Per la maggior parte dei casi le liste sono più che sufficienti.

Esempio

Gli iteratori

Un iteratore è un oggetto che si può percorrere un elemento alla volta. Tutte le sequenze (liste, tuple, stringhe) sono iterabili: con iter() ottieni un iteratore e con next() avanzi al prossimo elemento.

Esempio

I moduli

Un modulo è un file Python che contiene funzioni e variabili riutilizzabili. Si importa con import. La libreria standard di Python include centinaia di moduli pronti all'uso (math, random, datetime, os...).

Esempio

Le date

Il modulo datetime gestisce date e orari. Puoi ottenere la data attuale, formattarla e fare calcoli sul tempo.

Esempio

Il modulo math

Il modulo math offre funzioni matematiche avanzate: radici, potenze, funzioni trigonometriche, costanti come pi ed e, arrotondamenti.

Esempio

Il formato JSON

JSON (JavaScript Object Notation) è il formato standard per scambiare dati tra applicazioni e sul web. Il modulo json converte tra stringhe JSON e oggetti Python: loads (da JSON a dict) e dumps (da dict a JSON).

Esempio

Le espressioni regolari (RegEx)

Le espressioni regolari permettono di cercare e manipolare testo secondo schemi (pattern). Si usano tramite il modulo re. Sono potentissime per validare email, numeri di telefono, codici fiscali e altro.

Esempio

PIP: il gestore di pacchetti

PIP è lo strumento ufficiale per installare librerie esterne (pacchetti) da PyPI, il repository di Python. Si usa dal terminale, non dentro al codice.

Terminale

Gestione degli errori: try...except

Quando il codice può generare un errore (eccezione), lo gestiamo con try ... except per evitare che il programma si interrompa. Si possono aggiungere else (se non ci sono errori) e finally (eseguito sempre).

Esempio

La formattazione delle stringhe

Per costruire stringhe con valori variabili, il modo moderno e consigliato sono le f-string (da Python 3.6): basta anteporre f alla stringa e inserire le variabili tra parentesi graffe.

Esempio

Il valore None

None rappresenta l'assenza di valore ed è di tipo NoneType. Si usa per indicare “niente”, valori non ancora assegnati o il ritorno di funzioni che non restituiscono nulla. Per confrontarlo si usa is, non ==.

Esempio

L'input dell'utente

La funzione input() chiede un dato all'utente e restituisce sempre una stringa: per usarla come numero serve il casting con int() o float().

💡 Nell'editor del corso, input() apre una finestrella del browser dove inserire il valore.
Esempio

Gli ambienti virtuali (VirtualEnv)

Un ambiente virtuale è una “sandbox” isolata dove installare i pacchetti di un singolo progetto, senza interferire con gli altri o con il Python di sistema. È una buona pratica fondamentale. Si crea col modulo venv dal terminale.

Terminale

Programmazione a oggetti (OOP): introduzione

La programmazione orientata agli oggetti (OOP, Object-Oriented Programming) è un paradigma che organizza il codice attorno a oggetti: entità che uniscono dati (attributi) e comportamenti (metodi). Python è completamente orientato agli oggetti.

I quattro pilastri della OOP sono: incapsulamento, ereditarietà, polimorfismo e astrazione. Padroneggiarli ti permette di scrivere programmi grandi, ordinati e facili da mantenere.

📦 Pensa a una classe come allo “stampo” e agli oggetti come ai biscotti creati con quello stampo.

Classi e oggetti

Una classe è il modello (lo “stampo”) da cui si creano gli oggetti (le istanze). Si definisce con la parola chiave class. Creare un oggetto significa “istanziare” la classe.

Esempio

Il metodo __init__ (costruttore)

Il metodo speciale __init__ è il costruttore: viene chiamato automaticamente quando si crea un oggetto e serve a inizializzarne gli attributi. È il punto in cui passiamo i dati iniziali.

Esempio

Il parametro self

self rappresenta l'oggetto stesso e deve essere il primo parametro di ogni metodo di istanza. Serve ad accedere agli attributi e ai metodi dell'oggetto su cui il metodo è chiamato. Non lo passi tu: ci pensa Python.

Esempio

Le proprietà (attributi) di classe

Gli attributi di istanza appartengono al singolo oggetto (definiti con self.), mentre gli attributi di classe sono condivisi da tutte le istanze. Si possono leggere, modificare e aggiungere dinamicamente.

Esempio

I metodi di classe

I metodi sono funzioni definite dentro una classe che descrivono il comportamento degli oggetti. Oltre ai metodi di istanza esistono i metodi di classe (@classmethod, ricevono cls) e i metodi statici (@staticmethod, non ricevono né selfcls).

Esempio

L'ereditarietà

L'ereditarietà permette a una classe (figlia) di ereditare attributi e metodi da un'altra (genitore), riutilizzando il codice ed estendendolo. La funzione super() richiama il costruttore o i metodi della classe genitore.

Esempio

Il polimorfismo

Il polimorfismo (“molte forme”) consente di usare lo stesso metodo su oggetti di classi diverse, ottenendo comportamenti specifici per ciascuna. È ciò che rende il codice flessibile: scrivi una logica generale che funziona con tipi diversi.

Esempio

L'incapsulamento

L'incapsulamento consiste nel nascondere i dettagli interni di un oggetto, proteggendo i dati. In Python, per convenzione, un attributo con doppio underscore __nome diventa “privato” (name mangling) e si accede solo tramite metodi pubblici (getter e setter).

Esempio

Le classi annidate (inner classes)

Una classe annidata è una classe definita dentro un'altra classe. Si usa quando un oggetto “interno” ha senso solo nel contesto di quello “esterno”, ad esempio un motore che appartiene a un'automobile.

Esempio

Python Gestione dei file (File Handling)

La gestione dei file in Python permette di leggere e scrivere file sul disco con la funzione open(). Si indica il nome del file e la modalità: "r" (lettura), "w" (scrittura), "a" (aggiunta), "x" (crea).

ModalitàSignificato
"r"Lettura (errore se non esiste)
"w"Scrittura (sovrascrive)
"a"Aggiunge in fondo
"x"Crea un nuovo file
⭐ Usa sempre with open(...) as f:: chiude automaticamente il file anche in caso di errore.

Python Leggere i file

Per leggere un file si apre in modalità "r" e si usa read() (tutto il contenuto) o si itera riga per riga.

with open("dati.txt", "r") as f:
    contenuto = f.read()
    print(contenuto)

# riga per riga
with open("dati.txt", "r") as f:
    for riga in f:
        print(riga.strip())

Python Scrivere e creare file

Per scrivere si apre in "w" (sovrascrive) o "a" (aggiunge). Se il file non esiste, viene creato.

with open("note.txt", "w") as f:
    f.write("Prima riga\n")
    f.write("Seconda riga\n")

# aggiungere senza cancellare
with open("note.txt", "a") as f:
    f.write("Riga aggiunta\n")

Python Eliminare i file

Per eliminare un file si usa il modulo os. È buona pratica controllare prima che il file esista.

import os

if os.path.exists("note.txt"):
    os.remove("note.txt")
    print("File eliminato")
else:
    print("Il file non esiste")

Python NumPy

NumPy è la libreria fondamentale per il calcolo numerico in Python: introduce gli array multidimensionali, molto più veloci delle liste per i calcoli matematici. È la base di Pandas, SciPy e del machine learning.

import numpy as np

a = np.array([1, 2, 3, 4])
print(a * 2)        # [2 4 6 8]
print(a.mean())     # 2.5
print(a.sum())      # 10
💡 Si installa con pip install numpy. Gli array NumPy permettono operazioni su tutti gli elementi senza scrivere cicli.

Python Pandas

Pandas è la libreria per l'analisi dei dati: lavora con tabelle chiamate DataFrame, simili a un foglio Excel. Permette di leggere file CSV/Excel, filtrare, raggruppare e calcolare statistiche.

import pandas as pd

dati = pd.DataFrame({
    "nome": ["Anna", "Luca", "Sara"],
    "voto": [8, 6, 9]
})
print(dati["voto"].mean())          # 7.67
print(dati[dati["voto"] >= 7])      # solo i promossi
💡 Si installa con pip install pandas. È lo strumento principale dei data analyst.

Python SciPy

SciPy estende NumPy con funzioni avanzate di matematica, scienza e ingegneria: ottimizzazione, statistica, algebra lineare, elaborazione di segnali.

from scipy import stats

dati = [4, 8, 15, 16, 23, 42]
print(stats.tmean(dati))     # media
print(stats.mode([1,1,2,3])) # moda
💡 Si installa con pip install scipy. Si usa insieme a NumPy nel calcolo scientifico.

Python Django

Django è il framework web più usato in Python: permette di costruire siti e applicazioni web complete e sicure, con database, autenticazione e pannello di amministrazione già pronti.

# views.py — una semplice pagina Django
from django.http import HttpResponse

def home(request):
    return HttpResponse("Ciao dal mio sito Django!")
💡 Si installa con pip install django. Segue il pattern MVT (Model-View-Template). Alternative più leggere: Flask e FastAPI.

Python Matplotlib

Matplotlib è la libreria per creare grafici in Python: linee, barre, istogrammi, grafici a torta e a dispersione (scatter). Il modulo principale è pyplot, di solito importato come plt.

import matplotlib.pyplot as plt

x = [1, 2, 3, 4]
y = [10, 25, 18, 40]

plt.plot(x, y, marker="o")     # grafico a linee
plt.title("Andamento")
plt.xlabel("Mese")
plt.ylabel("Vendite")
plt.grid(True)
plt.show()
FunzioneTipo di grafico
plt.plot()Linee
plt.bar()Barre
plt.scatter()Dispersione (scatter)
plt.hist()Istogramma
plt.pie()Torta
💡 Si installa con pip install matplotlib. Con plt.subplot() metti più grafici nella stessa figura.

Python Machine Learning — introduzione

Il machine learning (apprendimento automatico) insegna al computer a fare previsioni a partire dai dati, invece di programmare regole fisse. Python è il linguaggio più usato per il ML grazie a librerie come scikit-learn, NumPy e Pandas.

  • 🤖 Apprendimento supervisionato: si impara da dati già etichettati (es. regressione, classificazione).
  • 🧩 Apprendimento non supervisionato: si trovano schemi nei dati senza etichette (es. clustering, K-means).

Python ML — Media, Mediana, Moda

Le tre misure di tendenza centrale sono la base della statistica per il ML: media (valore medio), mediana (valore centrale), moda (valore più frequente).

Esempio

Python ML — Deviazione standard e percentili

La deviazione standard misura quanto i dati si discostano dalla media: un valore basso indica dati vicini alla media, alto indica dati molto sparsi. I percentili indicano sotto quale valore si trova una certa percentuale dei dati.

Esempio

Python ML — Distribuzione dei dati

Capire la distribuzione dei dati è il primo passo del ML. La distribuzione normale (a campana) è la più comune: la maggior parte dei valori si concentra intorno alla media. Con NumPy si generano dati casuali per allenare i modelli.

import numpy as np
# 250 valori con media 50 e deviazione standard 10
dati = np.random.normal(50, 10, 250)
print(dati.mean(), dati.std())

Python ML — Regressione lineare

La regressione lineare trova la retta che meglio approssima la relazione tra due variabili, per fare previsioni (es. prevedere il prezzo in base alla dimensione).

from scipy import stats
x = [1, 2, 3, 4, 5]
y = [2, 4, 5, 4, 6]
slope, intercept, r, p, std = stats.linregress(x, y)
def previsione(v): return slope * v + intercept
print(previsione(6))   # previsione per x=6

Python ML — Regressione polinomiale e multipla

Quando i dati non seguono una retta, la regressione polinomiale usa una curva. La regressione multipla prevede un valore in base a più variabili contemporaneamente (es. prezzo in base a dimensione e numero di stanze).

import numpy as np
x = [1, 2, 3, 5, 6, 7]
y = [5, 3, 2, 3, 5, 8]
modello = np.poly1d(np.polyfit(x, y, 3))   # grado 3
print(modello(4))

Python ML — Train/Test e scala dei dati

Per valutare un modello si dividono i dati in training set (per allenare) e test set (per verificare), tipicamente 80/20. La scalatura porta variabili con unità diverse sulla stessa scala.

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=42)
💡 Separare train e test evita l'overfitting: un modello che “memorizza” i dati invece di imparare a generalizzare.

Python ML — Albero decisionale e altri modelli

L'albero decisionale prende decisioni con una serie di domande sì/no. Altri modelli comuni in scikit-learn: regressione logistica (classificazione), K-means (clustering), matrice di confusione (per valutare un classificatore).

from sklearn import tree
modello = tree.DecisionTreeClassifier()
modello.fit(X, y)
print(modello.predict([[nuovo_dato]]))

Python ML — K-Nearest Neighbors

Il K-Nearest Neighbors (KNN) classifica un nuovo dato in base ai k esempi più vicini. È semplice e intuitivo: “dimmi con chi vai e ti dirò chi sei”.

from sklearn.neighbors import KNeighborsClassifier
modello = KNeighborsClassifier(n_neighbors=3)
modello.fit(X, y)
print(modello.predict([[nuovo_dato]]))

Python DSA — Strutture dati e algoritmi

Le strutture dati e algoritmi (DSA, Data Structures and Algorithms) sono il cuore dell'informatica: imparare a organizzare i dati e a risolvere problemi in modo efficiente è fondamentale per i colloqui tecnici e per scrivere programmi veloci.

💡 Una struttura dati è un modo di organizzare i dati (lista, pila, albero); un algoritmo è una sequenza di passi per risolvere un problema (cercare, ordinare).

Python DSA — Stack (pile)

Uno stack (pila) segue la logica LIFO (Last In, First Out): l'ultimo elemento inserito è il primo a uscire, come una pila di piatti. In Python si realizza con una lista.

Esempio

Python DSA — Queue (code)

Una queue (coda) segue la logica FIFO (First In, First Out): il primo elemento inserito è il primo a uscire, come una fila allo sportello.

Esempio

Python DSA — Liste collegate (Linked List)

Una lista collegata è una sequenza di nodi, dove ogni nodo contiene un valore e un riferimento al nodo successivo. A differenza degli array, gli elementi non sono contigui in memoria.

class Nodo:
    def __init__(self, valore):
        self.valore = valore
        self.successivo = None

a = Nodo("A"); b = Nodo("B")
a.successivo = b        # A -> B

Python DSA — Hash table

Una hash table associa chiavi a valori con accesso quasi istantaneo. In Python è già integrata nel tipo dizionario (dict).

Esempio

Python DSA — Alberi (Trees)

Un albero è una struttura gerarchica con una radice e nodi figli. Casi particolari: albero binario (max 2 figli per nodo), albero binario di ricerca (BST) e gli alberi bilanciati AVL, che mantengono le ricerche veloci.

class NodoAlbero:
    def __init__(self, valore):
        self.valore = valore
        self.sinistro = None
        self.destro = None

radice = NodoAlbero(10)
radice.sinistro = NodoAlbero(5)
radice.destro = NodoAlbero(15)

Python DSA — Grafi (Graphs)

Un grafo rappresenta relazioni tra elementi (nodi) collegati da archi: mappe stradali, social network, reti. In Python si rappresenta spesso con un dizionario di liste di adiacenza.

grafo = {
    "A": ["B", "C"],
    "B": ["A", "D"],
    "C": ["A", "D"],
    "D": ["B", "C"]
}
print(grafo["A"])   # vicini di A: ['B', 'C']

Python DSA — Algoritmi di ordinamento

Gli algoritmi di ordinamento mettono in ordine gli elementi di una lista. I principali sono Bubble Sort, Selection Sort, Insertion Sort, Quick Sort, Merge Sort, Counting Sort e Radix Sort, con diverse velocità (complessità).

Esempio — Bubble Sort
AlgoritmoComplessità media
Bubble / Selection / InsertionO(n²)
Quick Sort / Merge SortO(n log n)
Counting / Radix SortO(n) (casi particolari)
⭐ In pratica si usa sorted(lista), che in Python usa Timsort (O(n log n)). Gli algoritmi qui sopra servono a capire come funziona l'ordinamento.

Python e MySQL

Python può collegarsi a un database MySQL con il connettore mysql-connector-python. Si apre una connessione, si crea un cursore e si eseguono le query SQL.

import mysql.connector

db = mysql.connector.connect(
    host="localhost", user="root", password="", database="scuola")
cur = db.cursor()

cur.execute("SELECT nome, voto FROM studenti WHERE voto >= %s", (6,))
for nome, voto in cur.fetchall():
    print(nome, voto)
💡 Il %s è un parametro (prepared statement): previene la SQL Injection. Approfondisci con il corso MySQL.

Python e MongoDB

MongoDB è un database NoSQL a documenti (in formato simile al JSON). Python ci si collega con la libreria pymongo: invece di tabelle e righe, si lavora con collezioni e documenti.

from pymongo import MongoClient

client = MongoClient("mongodb://localhost:27017/")
db = client["scuola"]
studenti = db["studenti"]

studenti.insert_one({"nome": "Anna", "voto": 8})
for s in studenti.find({"voto": {"$gte": 6}}):
    print(s["nome"], s["voto"])
💡 Si installa con pip install pymongo. MongoDB è molto usato per applicazioni web moderne e dati non strutturati.

Esempi Python pronti da copiare

Il modo migliore per imparare Python è partire da programmi già funzionanti: copiali, aprili nell'editor “Provalo tu” ed eseguili. Ogni esempio di questo corso è anche un piccolo esercizio.

Indovina il numero

Editor Python online (Provalo tu)

Su questo corso hai un editor Python online gratuito integrato, basato su Pyodide: esegui codice Python reale direttamente nel browser, senza installare nulla. Ogni esempio ha il pulsante “Provalo tu ▶”.

  1. Clicca “Provalo tu” su un esempio.
  2. Modifica il codice Python.
  3. Premi ▶ Esegui e guarda subito l'output.
💡 Per programmare sul tuo computer installa Python da python.org e un editor come Visual Studio Code o Thonny (ottimo per iniziare).

Quiz Python — metti alla prova le tue conoscenze

Un breve quiz di Python per autovalutarti. Pensa alla risposta e poi apri la soluzione.

1. Come si stampa a schermo in Python?

✅ Con la funzione print().

2. Qual è la differenza tra lista e tupla?

✅ La lista è modificabile ([]), la tupla è immutabile (()).

3. Come si gestisce un errore senza bloccare il programma?

✅ Con il blocco try / except.

4. Cosa fa len("ciao")?

✅ Restituisce 4, il numero di caratteri.

5. Come si definisce una funzione?

✅ Con la parola chiave def.

Esercizi Python con soluzioni (per principianti)

Questi esercizi di Python svolti sono pensati per chi vuole fare pratica con esempi reali. Per ognuno c'è la consegna e la soluzione commentata: provala nell'editor “Provalo tu”. Sono gli stessi esercizi di Python che assegno ai miei studenti durante le ripetizioni a Roma.

Esercizio 1 — Pari o dispari Base

Chiedi un numero e stampa se è pari o dispari.

Mostra soluzione
n = int(input("Numero: "))
if n % 2 == 0:
    print("Pari")
else:
    print("Dispari")

Esercizio 2 — Somma di una lista Base

Calcola la somma dei numeri di una lista senza usare sum().

Mostra soluzione
numeri = [4, 8, 15, 16, 23, 42]
totale = 0
for n in numeri:
    totale += n
print(totale)   # 108

Esercizio 3 — Conta le vocali Medio

Conta quante vocali ci sono in una frase.

Mostra soluzione
frase = input("Frase: ").lower()
vocali = sum(1 for c in frase if c in "aeiou")
print("Vocali:", vocali)

Esercizio 4 — Numero palindromo Medio

Verifica se una parola è palindroma (si legge uguale al contrario).

Mostra soluzione
parola = input("Parola: ")
if parola == parola[::-1]:
    print("È palindroma!")
else:
    print("Non è palindroma.")

Esercizio 5 — Dizionario dei voti Avanzato

Dato un dizionario nome→voto, stampa la media e chi è promosso.

Mostra soluzione
voti = {"Anna": 8, "Luca": 5, "Sara": 7}
media = sum(voti.values()) / len(voti)
print("Media:", round(media, 2))
promossi = [n for n, v in voti.items() if v >= 6]
print("Promossi:", promossi)
⭐ Esegui ogni soluzione nell'editor “Provalo tu” e modificala: è il modo migliore per imparare Python.

Sfide Python — esercizi avanzati senza soluzione

Le sfide Python sono esercizi più impegnativi, senza soluzione data: l'obiettivo è ragionare e costruire da soli.

🎯 Sfida 1 — Registro voti

Scrivi un programma che chiede all'utente una lista di voti e stampa media, voto più alto, voto più basso e quanti sono sopra la sufficienza. Gestisci anche input non validi.

🎯 Sfida 2 — Indovina il numero

Il computer pensa un numero da 1 a 100 e l'utente prova a indovinarlo; a ogni tentativo il programma dice “più alto” o “più basso”.

🎯 Sfida 3 — Conta parole

Dato un testo, conta quante volte compare ogni parola e mostra le 3 più frequenti (usa un dizionario).

Programma del corso Python (syllabus)

Questo è il programma completo del corso di Python, l'elenco ordinato degli argomenti dal principiante all'avanzato. È lo stesso syllabus che seguo in classe e nelle ripetizioni.

  1. Basi: sintassi, variabili, tipi di dato, operatori, input/output.
  2. Controllo: condizioni, cicli while e for, funzioni.
  3. Strutture dati: liste, tuple, set, dizionari.
  4. Avanzato: moduli, gestione errori, file, OOP (classi ed ereditarietà).
  5. Librerie: NumPy, Pandas, Matplotlib e un'introduzione al machine learning.
  6. Pratica: DSA, database, esercizi e mini-progetti.

Piano di studio Python

Quanto ci vuole per imparare Python? Le basi in 1-2 settimane. Ecco un piano di studio realistico studiando circa un'ora al giorno.

GiornoCosa studiare
1–2Sintassi, variabili, tipi, input/output
3Condizioni e cicli
4Liste, tuple, set, dizionari
5Funzioni e moduli
6Gestione errori, file, OOP
7Esercizi, sfide e prima libreria (NumPy/Pandas)

Preparazione al colloquio — domande Python frequenti

Le domande di Python più frequenti ai colloqui per ruoli da sviluppatore e data analyst. Utili anche per le interrogazioni a scuola.

Differenza tra lista e tupla?

La lista è mutabile, la tupla è immutabile. La tupla è più veloce e usabile come chiave di dizionario.

Cosa sono le list comprehension?

Un modo conciso per creare liste: [x*2 for x in range(5)].

Differenza tra == e is?

== confronta i valori, is confronta l'identità (stesso oggetto in memoria).

Cos'è l'ereditarietà nella OOP?

Il meccanismo per cui una classe figlia eredita attributi e metodi dalla classe padre, riusando il codice.

Bootcamp Python — percorso intensivo

Un bootcamp Python condensa la teoria nella pratica continua. Per imparare velocemente, alterna ogni argomento con un esercizio immediato:

  • Studia un argomento (max 20 minuti).
  • Esegui l'esempio nell'editor “Provalo tu”.
  • Risolvi un esercizio collegato senza guardare la soluzione.
  • Ripeti con l'argomento successivo.
💡 Vuoi un bootcamp Python seguito di persona a Roma? Con le ripetizioni in presenza costruiamo insieme un percorso su misura, dal primo print() al primo progetto.

Riferimento — Funzioni built-in

FunzioneCosa fa
print()Stampa a schermo
len()Lunghezza di una sequenza
type()Tipo di un valore
range()Sequenza di numeri
int(), str(), float()Conversione di tipo
input()Legge l'input dell'utente
sum(), max(), min()Somma, massimo, minimo

Riferimento — Metodi delle stringhe

MetodoCosa fa
upper() / lower()Maiuscolo / minuscolo
strip()Toglie gli spazi ai lati
replace()Sostituisce del testo
split()Divide in una lista
find()Posizione di una sottostringa
startswith() / endswith()Inizia / finisce con

Riferimento — Metodi delle liste

MetodoCosa fa
append()Aggiunge in fondo
insert()Inserisce in una posizione
remove()Rimuove un valore
pop()Rimuove e restituisce
sort()Ordina la lista
reverse()Inverte l'ordine

Riferimento — Metodi dei dizionari

MetodoCosa fa
keys()Tutte le chiavi
values()Tutti i valori
items()Coppie chiave-valore
get()Valore di una chiave (senza errore)
update()Aggiorna con un altro dizionario
pop()Rimuove una chiave

Certificato Python

Vuoi una certificazione di Python da mostrare nel CV? Al termine di questo corso hai le competenze per affrontare i test di certificazione online più diffusi (come PCEP/PCAP) e, soprattutto, per scrivere programmi Python reali.

Se sei un mio studente, posso rilasciarti un attestato di partecipazione al percorso di Python svolto durante le ripetizioni in presenza a Roma, con l'elenco degli argomenti e dei progetti realizzati.

⭐ Il vero “certificato” è il tuo portfolio: un programma o un'analisi dati che hai costruito da solo vale più di qualsiasi attestato.

Conclusione

Complimenti! 🎉 Hai completato il corso di Python completo e gratuito in italiano: dalle basi (variabili, cicli, funzioni) alla programmazione a oggetti, dalla gestione dei file alle grandi librerie (NumPy, Pandas, Matplotlib), dal machine learning alle strutture dati e algoritmi (DSA), fino ai database (MySQL, MongoDB), con esercizi, sfide e riferimenti. Ora hai una panoramica completa di uno dei linguaggi più richiesti al mondo.

Il modo migliore per consolidare Python è esercitarsi ogni giorno: rifai gli esercizi Python, affronta le sfide e prova a costruire un piccolo progetto.

E ora?

Da qui puoi specializzarti: sviluppo web (Django/Flask), data science e intelligenza artificiale (Pandas, scikit-learn), oppure automazione. Se vuoi un percorso guidato passo passo o aiuto per una verifica, posso seguirti con le ripetizioni di informatica in presenza a Roma.

🎯 La tua sfida finale

Scrivi un programma che chiede all'utente una lista di voti e stampa media, voto più alto, voto più basso e quanti sono sopra la sufficienza. Prova a gestire anche input non validi.

✏️ Provalo tu — scrivi ed esegui Python
Anteprima