if, elif e else in Python: come funzionano le condizioni
📅 16 giugno 2026 — di Alessandro Simone
Un programma che esegue sempre le stesse istruzioni, senza mai prendere decisioni, è abbastanza limitato. Il costrutto if è ciò che dà al programma la capacità di scegliere: in base a una condizione, esegue un blocco di istruzioni oppure un altro. È la traduzione in codice del rombo del diagramma di flusso, ed è uno degli strumenti più usati in assoluto. In questa guida vediamo come funziona if, cosa aggiunge elif per gestire più casi, e quando serve else.
Cos'è l'istruzione if in Python?
L'if è la struttura di selezione: permette al programma di eseguire un blocco di istruzioni solo se una certa condizione è vera. Se la condizione è falsa, quel blocco viene saltato completamente. Hai già visto questa idea nei tre mattoni della programmazione: la selezione è proprio uno di quei tre, e corrisponde al rombo del diagramma di flusso.
# Se la media è almeno 6, il programma stampa "Promosso"
media = 7
if media >= 6:
print("Promosso") # questo si esegue solo se media >= 6
print("Fine programma") # questo si esegue sempre
La struttura è semplice: if, poi la condizione, poi i due punti. Le istruzioni da eseguire se la condizione è vera vanno indentate (spostate a destra di quattro spazi) sotto l'if. Come nel ciclo for, l'indentazione non è estetica: è quella che dice a Python cosa sta dentro e cosa sta fuori.
Come funziona else?
L'else è il "altrimenti": il blocco che si esegue quando la condizione dell'if è falsa. Insieme, if ed else coprono entrambe le strade del rombo: quella del "sì" e quella del "no".
# Con else copriamo entrambi i casi
media = 5
if media >= 6:
print("Promosso") # condizione vera
else:
print("Rimandato") # condizione falsa
# Con media = 5, stampa: Rimandato
L'else non ha una condizione propria: si esegue automaticamente quando tutte le condizioni precedenti sono false. È sempre l'ultimo blocco, e non è obbligatorio: se non ti serve un "altrimenti", puoi usare l'if da solo.
Quando servono più casi? Ecco elif
A volte le strade possibili non sono solo due. Supponiamo di voler assegnare un giudizio al voto: ottimo, buono, sufficiente, insufficiente. Non basta un if/else, perché i casi sono quattro. È qui che entra elif, abbreviazione di "else if", cioè "altrimenti se".
# Giudizio in base al voto: quattro casi
voto = 8
if voto >= 9:
print("Ottimo") # caso 1: voto 9 o 10
elif voto >= 7:
print("Buono") # caso 2: voto 7 o 8
elif voto >= 6:
print("Sufficiente") # caso 3: voto 6
else:
print("Insufficiente") # caso 4: tutto il resto (sotto il 6)
# Con voto = 8, stampa: Buono
Python controlla le condizioni dall'alto verso il basso e si ferma alla prima vera. Con voto = 8: la prima condizione (voto >= 9) è falsa, si passa alla seconda (voto >= 7), questa è vera, si stampa "Buono" e si esce. Le condizioni successive non vengono nemmeno controllate.
Puoi mettere quanti elif vuoi, ma ce ne sarà sempre uno solo che viene eseguito: il primo la cui condizione risulta vera.
Quali operatori si usano nelle condizioni?
Le condizioni dentro l'if si costruiscono con gli operatori di confronto. Li hai già usati in tutti gli esempi: eccoli raccolti con il loro significato.
# Gli operatori di confronto in Python
voto = 7
voto == 7 # uguale a (due uguali, non uno solo!)
voto != 7 # diverso da
voto > 6 # maggiore di
voto >= 6 # maggiore o uguale a
voto < 8 # minore di
voto <= 8 # minore o uguale a
# Si possono anche combinare con "and" e "or"
if voto >= 6 and voto <= 8:
print("Nella fascia 6-8")
Ricordati che nelle condizioni si usa il doppio uguale ==, non l'uguale singolo. L'uguale singolo serve ad assegnare un valore a una variabile, non a confrontare. È l'errore più comune in assoluto, e Python di solito dà un errore chiaro, ma vale la pena averlo in testa.
Quali errori si fanno con l'if?
Gli inciampi più frequenti che vedo con le condizioni sono sempre questi:
- Dimenticare i due punti: dopo la condizione dell'if, dell'elif e dell'else ci vogliono sempre i due punti
:. Dimenticandoli, Python dà subito errore di sintassi. - Sbagliare l'indentazione: le istruzioni dentro l'if devono essere indentate. Se non lo sono, o lo sono in modo irregolare, Python non capisce cosa sta dentro e cosa sta fuori.
- Usare = invece di ==: nella condizione va sempre il doppio uguale per confrontare, mai il singolo che assegna.
- Elif invece di if separati: se usi elif, solo uno dei blocchi viene eseguito. Se hai bisogno di controllare condizioni indipendenti e potenzialmente tutte vere, devi usare if separati, non elif.
In sintesi
L'if è la struttura di selezione: esegue un blocco se una condizione è vera. L'else copre il caso contrario. L'elif gestisce i casi multipli, controllando le condizioni in ordine e fermandosi alla prima vera. Tutto nasce dal rombo del diagramma di flusso, che avevi già incontrato studiando gli algoritmi. Una volta che sai far decidere il programma, il passo naturale è combinare le decisioni con la ripetizione: è proprio quello che fa il ciclo for dentro cui spesso si annida un if, come hai visto nell'esempio del conteggio dei promossi nelle tre strutture di base.
Domande frequenti
Come funziona if in Python? +
L'if è la struttura di selezione di Python: esegue un blocco di istruzioni solo se una condizione è vera, e lo salta completamente se è falsa. Si scrive con la parola chiave if, seguita dalla condizione e dai due punti, e le istruzioni da eseguire vanno indentate sotto, spostate a destra di quattro spazi. L'indentazione non è opzionale: è ciò che dice a Python quali righe fanno parte del blocco. Se la condizione è falsa e non c'è un else, il programma prosegue semplicemente con le istruzioni successive, quelle non indentate sotto l'if.
Qual è la differenza tra elif e else? +
L'else è il blocco che si esegue quando tutte le condizioni precedenti sono false: non ha una condizione propria e si mette sempre per ultimo. L'elif, abbreviazione di "else if", permette di aggiungere condizioni intermedie: si esegue solo se le condizioni precedenti sono false e la sua è vera. In pratica, elif serve quando i casi possibili sono più di due, come assegnare un giudizio in base al voto (ottimo, buono, sufficiente, insufficiente). Python controlla le condizioni dall'alto verso il basso e si ferma alla prima vera, quindi se una condizione elif è soddisfatta, le successive non vengono nemmeno valutate.
Quali operatori si usano nelle condizioni if? +
Le condizioni si costruiscono con gli operatori di confronto: == per uguale (due uguali, non uno solo), != per diverso, > per maggiore, >= per maggiore o uguale, < per minore, <= per minore o uguale. Più condizioni si possono combinare con and (entrambe devono essere vere) e or (basta che una sia vera). L'errore più comune è usare un solo uguale = invece del doppio == nella condizione: un uguale assegna un valore a una variabile, il doppio uguale confronta due valori. Python in genere segnala l'errore, ma è bene avere chiara la differenza fin da subito.
È obbligatorio usare else dopo if? +
No, l'else non è obbligatorio. Si può usare if da solo, senza else, quando non serve fare nulla nel caso in cui la condizione sia falsa: il programma semplicemente prosegue con le istruzioni successive. L'else si aggiunge solo quando si vuole specificare un comportamento alternativo esplicito per il caso contrario. Allo stesso modo, elif è opzionale: si usa solo quando i casi da gestire sono più di due. La struttura minima è un if da solo; else e elif sono estensioni che si aggiungono quando servono.
Posso mettere un if dentro un altro if? +
Sì, si chiama if annidato ed è perfettamente lecito. Dentro il blocco di un if si può scrivere un altro if, con la propria condizione e il proprio blocco indentato un livello più in dentro. È utile quando una decisione dipende da un'altra: ad esempio, prima si controlla se lo studente è promosso, e poi, solo se promosso, si verifica se ha la lode. L'unica attenzione è l'indentazione, che diventa più profonda a ogni livello di annidamento: mantenere l'indentazione coerente è fondamentale per non confondere Python e non confondersi da soli.
