Istruzione Elif in Python

L’istruzione elif (abbreviazione di “else if”) in Python è una struttura di controllo che consente di verificare condizioni multiple in sequenza. Questa potente funzionalità permette di creare catene di condizioni logiche, offrendo un’alternativa più elegante e leggibile rispetto all’utilizzo di molteplici istruzioni if annidate. Esploriamo dettagliatamente come utilizzare elif per gestire scenari complessi con multiple condizioni.
Sintassi dell’Istruzione elif
La struttura dell’istruzione elif è la seguente:
if prima_condizione:
# Blocco eseguito se la prima condizione è vera
elif seconda_condizione:
# Blocco eseguito se la seconda condizione è vera
elif terza_condizione:
# Blocco eseguito se la terza condizione è vera
else:
# Blocco eseguito se nessuna condizione è vera
voto = 85
if voto >= 90:
print("Voto: Ottimo")
elif voto >= 80:
print("Voto: Buono")
elif voto >= 70:
print("Voto: Discreto")
elif voto >= 60:
print("Voto: Sufficiente")
else:
print("Voto: Insufficiente")
In questo esempio, Python valuta le condizioni in ordine sequenziale e esegue il primo blocco la cui condizione risulta vera.
Caratteristiche dell’Istruzione elif
Valutazione Sequenziale
Le condizioni elif vengono valutate in ordine dall’alto verso il basso. Non appena una condizione risulta vera, il blocco corrispondente viene eseguito e le condizioni successive vengono ignorate.
numero = 15
if numero > 10:
print("Numero maggiore di 10") # Questo viene eseguito
elif numero > 5:
print("Numero maggiore di 5") # Questo NON viene eseguito
elif numero > 0:
print("Numero positivo") # Questo NON viene eseguito
Numero Illimitato di elif
Puoi utilizzare quante istruzioni elif necessarie per gestire tutti i casi specifici del tuo programma.
giorno = "martedì"
if giorno == "lunedì":
print("Inizio settimana")
elif giorno == "martedì":
print("Secondo giorno lavorativo")
elif giorno == "mercoledì":
print("MetĂ settimana")
elif giorno == "giovedì":
print("Quasi fine settimana")
elif giorno == "venerdì":
print("TGIF!")
elif giorno == "sabato" or giorno == "domenica":
print("Weekend!")
else:
print("Giorno non riconosciuto")
Esempi Pratici
Sistema di Classificazione dell’EtĂ
etĂ = 25
if etĂ < 13:
categoria = "Bambino"
elif etĂ < 20:
categoria = "Adolescente"
elif etĂ < 60:
categoria = "Adulto"
else:
categoria = "Anziano"
print(f"Categoria: {categoria}")
Calcolatrice Semplice
operazione = input("Inserisci operazione (+, -, *, /): ")
a = float(input("Primo numero: "))
b = float(input("Secondo numero: "))
if operazione == "+":
risultato = a + b
elif operazione == "-":
risultato = a - b
elif operazione == "*":
risultato = a * b
elif operazione == "/":
if b != 0:
risultato = a / b
else:
print("Errore: Divisione per zero!")
risultato = None
else:
print("Operazione non valida!")
risultato = None
if risultato is not None:
print(f"Risultato: {risultato}")
Sistema di Autenticazione
username = input("Username: ")
password = input("Password: ")
if username == "admin" and password == "admin123":
print("Accesso amministratore consentito")
permessi = "completi"
elif username == "user" and password == "user123":
print("Accesso utente consentito")
permessi = "limitati"
elif username == "guest":
print("Accesso ospite consentito")
permessi = "sola lettura"
else:
print("Credenziali non valide")
permessi = "nessuno"
elif vs if Multipli
Utilizzare elif è più efficiente rispetto a multiple istruzioni if separate, poiché Python smette di valutare le condizioni non appena ne trova una vera.
Approccio Inefficiente (if multipli)
punteggio = 85
# Tutte le condizioni vengono valutate
if punteggio >= 90:
livello = "Eccellente"
if punteggio >= 80 and punteggio < 90:
livello = "Buono"
if punteggio >= 70 and punteggio < 80:
livello = "Discreto"
if punteggio < 70:
livello = "Insufficiente"
Approccio Efficiente (elif)
punteggio = 85
# Solo le condizioni necessarie vengono valutate
if punteggio >= 90:
livello = "Eccellente"
elif punteggio >= 80:
livello = "Buono" # Questa viene eseguita e le successive ignorate
elif punteggio >= 70:
livello = "Discreto"
else:
livello = "Insufficiente"
Condizioni Complesse con elif
Puoi utilizzare operatori logici per creare condizioni piĂą complesse nelle istruzioni elif.
temperatura = 22
umiditĂ = 65
vento = 15
if temperatura > 30 and umiditĂ > 70:
print("Molto caldo e umido")
elif temperatura > 25 and vento < 10:
print("Caldo e poco ventoso")
elif temperatura < 10 or vento > 30:
print("Freddo o molto ventoso")
elif 15 <= temperatura <= 25 and umiditĂ < 60:
print("Tempo ideale")
else:
print("Condizioni normali")
elif con Funzioni
L’istruzione elif può essere utilizzata efficacemente all’interno di funzioni per creare logiche decisionali complesse.
def determina_sconto(età , è_studente, è_anziano):
if è_anziano and età >= 65:
return 0.20 # 20% di sconto per anziani
elif è_studente and età < 26:
return 0.15 # 15% di sconto per studenti giovani
elif etĂ < 18:
return 0.10 # 10% di sconto per minorenni
elif etĂ >= 60:
return 0.05 # 5% di sconto per over 60
else:
return 0.0 # Nessuno sconto
# Utilizzo della funzione
sconto = determina_sconto(22, True, False)
print(f"Sconto applicabile: {sconto * 100}%")
Best Practices
Ordinamento delle Condizioni
Ordina le condizioni dalla piĂą specifica alla piĂą generale, e dalla piĂą probabile alla meno probabile per ottimizzare le performance.
# Buon ordinamento
if etĂ == 18: # Caso specifico
print("Appena maggiorenne")
elif etĂ < 18: # Caso generale
print("Minorenne")
elif etĂ < 65: # Caso generale
print("Adulto")
else: # Caso di default
print("Anziano")
Utilizzare else per Casi di Default
Includi sempre un’istruzione else finale per gestire casi non previsti.
stato = input("Inserisci lo stato dell'ordine: ")
if stato == "pending":
print("Ordine in attesa")
elif stato == "processing":
print("Ordine in elaborazione")
elif stato == "shipped":
print("Ordine spedito")
elif stato == "delivered":
print("Ordine consegnato")
else:
print("Stato ordine non riconosciuto") # Gestione casi imprevisti
Conclusione
L’istruzione elif è uno strumento fondamentale per creare logiche decisionali complesse e ben strutturate in Python. Offre un modo elegante e efficiente per gestire condizioni multiple, migliorando la leggibilità del codice e le performance del programma. Utilizzare correttamente elif consente di scrivere codice più pulito, manutenibile e logicamente organizzato rispetto all’utilizzo di istruzioni if annidate o multiple.
