È uscito il Corso SQL Completo

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.