Le istruzioni condizionali in python
Nel linguaggio python posso sviluppare una struttura condizionale tramite l'istruzione if.
La sintassi dell'istruzione if
if (espressione):
blocco di istruzioni
Se l'espressione di controllo (condizione) è vera, l'istruzione if esegue il blocco di istruzioni.
Se invece la condizione è falsa, il programma continua l'esecuzione saltando alla prima istruzione successiva alla struttura condizionale.
Nota. In python il blocco di istruzioni non è delimitato da parentesi o altre parole chiave. Il python utilizza il metodo dell'indentazione, l'inizio delle istruzioni viene spostato verso destra lasciando degli spazi a sinistra per portarle "dentro" la struttura condizionata.
Un esempio pratico
Nel seguente codice chiedo all'utente di digitare un numero sulla tastiera.
Poi assegno il numero digitato alla variabile n.
n=int(input('digita un numero: '))
if (n==5):
print('Hai digitato 5 ')
print('Non hai digitato 5 ')
Nella seconda riga l'istruzione if verifica se la variabile i è uguale a 5.
- Se l'espressione (n==5) è vera, l'interprete python esegue il blocco di istruzioni dentro la if. In questo caso, il blocco di istruzioni è composto soltanto dalla prima istruzione print. Il risultato finale è il seguente:
Hai digitato 5
- Se l'espressione (n==5) è falsa, vuol dire che l'utente ha digitato un altro numero. L'interprete python salta alla prima istruzione successiva alla struttura condiziale, ossia la seconda istruzione print. Il risultato finale è il seguente:
Non hai digitato 5
L'esecuzione alternativa ( ELSE )
L'istruzione if prevede anche un blocco alternativo di istruzioni da eseguire quando la condizione non si verifica.
Questo secondo blocco va inserito dopo la clausola else:
if (condizione):
blocco istruzioni 1
else:
blocco istruzioni 2
Se la condizione è vera, l'istruzione if esegue il blocco 1.
Viceversa, se la condizione è falsa, l'istruzione if esegue il blocco 2.
Un esempio pratico
Nel seguente codice chiedo all'utente di digitare un numero intero e lo assegno alla variabile n.
n=int(input('digita un numero: '))
if (n>0):
print('Il numero è positivo')
else:
print('Il numero non è positivo')
Nella condizione verifico se il numero è maggiore di 0.
- Se la condizione è vera, l'istruzione if esegue il primo blocco e stampa sullo schermo il messaggio "il numero è positivo".
il numero è positivo
- Se, invece, la condizione è falsa, l'istruzione if esegue il secondo blocco e stampa sullo schermo il messaggio "il numero non è positivo".
il numero non è positivo
Le condizioni in serie ( ELIF )
Nell'istruzione if posso inserire anche più blocchi associati a condizioni in serie.
In questo caso utilizzo la clausola elif:
if (condizione):
blocco istruzioni 1
elif (condizioni2):
blocco istruzioni 2
elif (condizioni3):
blocco istruzioni 3
Dove elif è l'abbreviazione di "else if" (altrimenti se).
Non c'è limite al numero delle condizioni in serie (elif). Ne posso inserire anche più di una, due, tre, ecc.
Un esempio pratico
Nel seguente codice chiedo all'utente di digitare un numero e lo assegno alla variabile n.
n=int(input('digita un numero: '))
if (n>0):
print('il numero è positivo')
elif (n<0):
print('il numero è negativo')
else:
print('il numero è zero')
L'esecuzione del programma si svolge nel seguente modo:
- Se la prima condizione è vera (n>0) il programma stampa a video il messaggio "il numero è positivo" e salta alla fine della struttura condizionale.
il numero è positivo
- Se la prima condizione è falsa, nella elif verifico se è minore di zero (n<0). Se la elif è vera, il programma stampa il messaggio "il numero è negativo" e salta alla fine della struttura condizionale.
il numero è negativo
- Se anche l'elif è falsa, allora il programma esegue il blocco di istruzione dopo la else. Stampa il messaggio "il numero e zero".
il numero è zero
Le condizioni annidate
Nel linguaggio python posso anche annidare più istruzioni if.
if (condizione):
if (condizione2):
if (condizione3):
Non c'è limite al numero delle if annidate.
Un esempio pratico
Nel seguente codice chiedo all'utente di digitare un numero.
Poi verifico se il numero è positivo, negativo o nullo.
n=int(input('digita un numero: '))
if (n>0):
print('il numero è positivo')
else:
if (n==0):
print('il numero è zero')
else:
print('il numero è negativo')
All'interno della clausola else è presente una seconda if annidata.
- Se la condizione (n>0) è vera, il programma visualizza il messaggio "il numero è positivo".
- Se la condizione (n>0) è falsa, il programma esegue il blocco di istruzione else: dove è presente la seconda if che verifica se il numero è uguale a zero (n==0) oppure no. In quest'ultimo caso, per esclusione il numero è negativo.