Che cosa sono le istruzioni 'else' ed 'elif'?
Cosa accade se si vuole anche che il programma esegua una parte di codice quando l'espressione di test è False
? Oppure cosa accade se si vuole includere un'altra espressione di test? Python include altre parole chiave che è possibile usare per rendere più complesse le istruzioni if
, else
e elif
. Quando si usano if
, else
e elif
in combinazione, è possibile scrivere programmi complessi con più espressioni di test e istruzioni da eseguire.
Utilizzare else
Si sa che quando si usa un'istruzione if
, il corpo del programma verrà eseguito solo se l'espressione di test è True
. Per aggiungere altro codice che verrà eseguito quando l'espressione di test è False
, è necessario aggiungere un'istruzione else
.
È possibile adattare un esempio dalla sezione precedente:
a = 27
b = 93
if a >= b:
print(a)
In questo esempio, se a
non è maggiore o uguale a b
, non viene eseguita alcuna operazione. Si supponga invece di voler stampare b
se l'espressione di test è False
:
a = 27
b = 93
if a >= b:
print(a)
else:
print(b)
Output: 93
Se l'espressione di test è False
, il codice nel corpo dell'istruzione if
viene ignorato e il programma continua l'esecuzione dall'istruzione else
. La sintassi di un'istruzione if/else
è sempre:
if test_expression:
# statement(s) to be run
else:
# statement(s) to be run
Utilizzare elif
In Python la parola chiave elif
è l'abbreviazione di else if. L'uso delle istruzioni elif
consente di aggiungere più espressioni di test al programma. Queste istruzioni vengono eseguite nell'ordine in cui vengono scritte, quindi il programma immetterà un'istruzione elif
solo se la prima istruzione if
è False
. Ad esempio:
a = 27
b = 93
if a <= b:
print("a is less than or equal to b")
elif a == b:
print("a is equal to b")
Output: a is less than or equal to b
In questa variazione l'istruzione elif
nel blocco di codice non verrà eseguita perché l'istruzione if
è True
.
La sintassi di un'istruzione if/elif
è:
if test_expression:
# statement(s) to be run
elif test_expression:
# statement(s) to be run
Combinare le istruzioni if
, elif
e else
È possibile combinare le istruzioni if
, elif
e else
per creare programmi con una logica condizionale complessa. Tenere presente che un'istruzione elif
viene eseguita solo quando la condizione if
è false
. Si noti anche che un blocco if
può avere un solo blocco else
, ma può avere più blocchi elif
.
Verrà ora esaminato un esempio con un'istruzione if
, elif
e else
:
a = 27
b = 93
if a < b:
print("a is less than b")
elif a > b:
print("a is greater than b")
else:
print ("a is equal to b")
Un blocco di codice che usa tutti e tre i tipi di istruzioni ha la sintassi seguente:
if test_expression:
# statement(s) to be run
elif test_expression:
# statement(s) to be run
elif test_expression:
# statement(s) to be run
else:
# statement(s) to be run
Usare la logica condizionale annidata
Python supporta anche la logica condizionale annidata, ovvero è possibile annidare le istruzioni if
, elif
e else
per creare programmi ancora più complessi. Per annidare le condizioni, impostare un rientro nelle condizioni interne e tutti gli elementi che si trovano allo stesso livello di rientro verranno eseguiti nello stesso blocco di codice:
a = 16
b = 25
c = 27
if a > b:
if b > c:
print ("a is greater than b and b is greater than c")
else:
print ("a is greater than b and less than c")
elif a == b:
print ("a is equal to b")
else:
print ("a is less than b")
Questo frammento di codice produce l'output a is less than b
.
La logica condizionale annidata segue le stesse regole della logica condizionale normale all'interno di ogni blocco di codice. Di seguito è riportato un esempio della sintassi:
if test_expression:
# statement(s) to be run
if test_expression:
# statement(s) to be run
else:
# statement(s) to be run
elif test_expression:
# statement(s) to be run
if test_expression:
# statement(s) to be run
else:
# statement(s) to be run
else:
# statement(s) to be run