Il Comando ELSE
Il costrutto IF può essere arricchito attraverso l’uso del comando ELSE.
Nella sezione precedente abbiamo visto come se una condizione viene soddisfatta le istruzioni all’interno vengono eseguite altrimenti no. Ma a volte potremmo decidere in un costrutto di eseguire alcune istruzioni se la condizione viene soddisfatta, ed altre istruzioni se non lo è.
if condizione:
istruzioni A
else:
istruzioni B
Questo può essere molto utile in tanti casi. Per esempio il codice dell’ esempio precedente (quello dei numeri pari o dispari) può essere modificato con il comando ELSE.
s = input("Inserisci un valore:")
a = int(s)
if a%2 == 0:
print("Hai inserito un numero pari")
else:
print("Hai inserito un numero dispari")
Questo lo abbiamo potuto fare dato che siamo sicuri che se un numero non è pari è certamente dispari. Il costrutto precedente ha due vantaggi:
- gestione del flusso più ordinata
- esecuzione più efficiente (viene valutata una condizione in meno)
Quindi il costrutto IF-ELSE viene utilizzato per differenziare le operazioni da eseguire quando in una condizione vogliamo coprire il 100% dei casi.
IF-ELSE annidato
Inoltre con IF-ELSE dividiamo la scelta dei casi possibili a due gruppi. Ma quando dobbiamo suddividere la scelta in un gruppo maggiore di 2?
Per esempio vogliamo sapere se una variabile è minore di zero, compresa tra 0 e 10 o maggiore di 10.
In questo caso possiamo utilizzare il costrutto IF-ELSE più volte, uno annidato all’altro.
Per prima cosa vedremo se la variabile è maggiore o minore di zero.
s = input("Inserisci un valore:")
a = int(s)
if a >= 0:
print("Hai inserito un numero maggiore o uguale a zero")
else:
print("Hai inserito un numero minore di zero")
Questo rappresenterà il costrutto IF-ELSE più esterno. Quindi in parole semplici abbiamo suddiviso il caso in due sottogruppi, il primo che comprende numeri maggiori o uguali a zero, l’altro numeri minori di zero. Ma ora abbiamo bisogno di sapere anche se è compreso tra 0 e 5 oppure è maggiore di 5. Per fare questo dobbiamo inserire un costrutto IF-ELSE nel primo sottogruppo in modo da dividerlo ulteriormente.
s = input("Inserisci un valore:")
a = int(s)
if a >= 0:
if a > 5:
print("Hai inserito un numero maggiore di 5")
else:
print("Hai inserito un numero compreso tra 0 e 5")
else:
print("Hai inserito un numero minore di zero")
Per avere un quadro mentale è utile prima di scrivere il codice avere ben chiari in mente questi punti:
- in quanti casi dobbiamo suddividere la scelta,
- pensare a quali condizioni applicare,
- in quale sequenza
- come devono essere annidate
E alla fine si dovrà avere in mente uno schema che può essere rappresentato nel seguente modo:
Inutile dire che è del tutto equivalente se avessimo suddiviso il codice in quest’altra maniera (annidando il costrutto IF-ELSE su ELSE invece che su IF).
s = input("Inserisci un valore:")
a = int(s)
if a < 0:
print("Hai inserito un numero minore di zero")
else:
if a > 5:
print("Hai inserito un numero maggiore di 5")
else:
print("Hai inserito un numero compreso tra 0 e 5")
Il comando ELIF
Abbiamo visto che annidando uno dentro l’altro i costrutti IF-ELSE la struttura del codice va via via sempre più ramificandosi. In Python esiste un modo alternativo per lavorare con queste strutture decisionali più complesse, semplificandole con il comando ELIF, che non è altro che l’acronimo di ELSE-IF.
Applicandolo al caso precedente abbiamo:
s = input("Inserisci un valore:")
a = int(s)
if a < 0:
print("Hai inserito un numero minore di zero")
elif a > 5:
print("Hai inserito un numero maggiore di 5")
else:
print("Hai inserito un numero compreso tra 0 e 5")
Come possiamo vedere, utilizzando questo comando inoltre la struttura del codice risulta essere più leggibile, con la scomparsa delle indentazioni progressive, che rimangono così tutte allo stesso livello.
⇐ Vai a Lezione 2.2 – Il costrutto condizionale IF
Vai a Lezione 2.4- La logica Booleana ⇒