Introduzione
Il processo decisionale è uno dei concetti fondamentali della programmazione informatica. Python supporta le comuni istruzioni di controllo del flusso presenti in altre lingue, con alcune modifiche. L'istruzione control if
è una delle istruzioni più basilari e conosciute utilizzata per eseguire il codice in base a una condizione specifica.
In questo articolo, esamineremo le basi dell'istruzione if
in Python.
Dichiarazione if su Python
La forma più semplice dell'istruzione if
in Python è la seguente:
if EXPRESSION:
STATEMENT
L'istruzione if
inizia con la parola chiave if
seguita dall'espressione condizionale.
La EXPRESSION
deve essere seguita dai due punti (:
) . Se EXPRESSION
viene valutato True
, STATEMENT
viene eseguito. Se EXPRESSION
ritorna False
, non succede nulla, STATEMENT
viene ignorato. STATEMENT
può essere una qualsiasi dichiarazione, incluse più dichiarazioni o ulteriori dichiarazioni if
nidificate . Per eseguire nessuna istruzione, utilizzare l'istruzione pass
.
Il blocco STATEMENT
inizia con un rientro e termina con la prima riga non rientrata. La maggior parte delle persone sceglie di utilizzare il rientro a 4 o 2 spazi. La Guida di stile ufficiale per Python Code raccomanda di usare 4 spazi per livello di rientro ed evitare di mescolare l'uso di tabulazioni e spazi per il rientro.
Diamo un'occhiata al seguente script di esempio che controlla se un determinato numero è maggiore di 5.
number = int(input('Enter a number: '))
if number > 5:
print(number, 'is greater than 5.')
Salvare il codice in un file ed eseguirlo dalla riga di comando:
python test.py
Lo script ti chiederà di inserire un numero. Ad esempio, se si immette 10, l'espressione condizionale verrà valutata in True
(10 è maggiore di 5) e la funzione print
verrà eseguita.
10 is greater than 5.
Python supporta operazioni di confronto standard:
a == b
- Vero sea
eb
sono uguali.a != b
- Vero sea
eb
non sono uguali.a > b
- Vero sea
è maggiore dib
.a >= b
- Vero sea
è uguale o maggiore dib
.a < b
- Vero sea
è inferiore ab
.a <= b
- Vero sea
è uguale o inferiore ab
.
Puoi anche usare la parola chiave in
per verificare se un valore è presente in un iterabile (stringa, elenco, tupla, dizionario, ecc.):
s = 'noviello'
if 'ze' in s:
print('True.')
Ecco un altro esempio usando un dizionario:
d = {'a': 2, 'b': 4}
if 'a' in d:
print('True.')
Se utilizzata su un dizionario, la parola chiave in
controlla se il dizionario ha una chiave specifica.
Per negare l'espressione condizionale utilizzare l'operatore logico not
:
number = int(input('Enter a number: '))
if not number < 5:
print(number, 'is greater than 5.')
Dichiarazione if..else
Un'istruzione if..else
valuta una condizione ed esegue una delle due istruzioni in base al risultato.
L'istruzione Python if..else
ha la forma seguente:
if EXPRESSION:
STATEMENT1
else:
STATEMENT2
Se EXPRESSION
viene valutato True
, STATEMENT1
verrà eseguito. Altrimenti, se EXPRESSION
ritorna False
, STATEMENT2
verrà eseguito. È possibile avere una sola else
clausola nell'istruzione.
La parola chiave else
deve terminare con due punti (:
) e trovarsi allo stesso livello di rientro della parola chiave if
corrispondente.
Aggiungiamo una clausola else
al precedente script di esempio:
number = int(input('Enter a number: '))
if number > 5:
print(number, 'is greater than 5.')
else:
print(number, 'is equal or less than 5.')
Se si esegue il codice e si immette un numero, lo script stamperà un messaggio diverso a seconda che il numero sia maggiore o minore/uguale a 5.
Dichiarazione if..elif..else
La parola chiave elif
è l'abbreviazione di else if
.
L'istruzione Python if..elif..else
ha la forma seguente:
if EXPRESSION1:
STATEMENT1
elif: EXPRESSION2:
STATEMENT2
else:
STATEMENT3
Se EXPRESSION1
viene valutato True
, STATEMENTS1
verrà eseguito. Se viene EXPRESSION2
valutato True
, STATEMENTS2
verrà eseguito. Se nessuna delle espressioni valuta True
, STATEMENTS3
viene eseguito.
La parola chiave elif
deve terminare con due punti (:
) e trovarsi allo stesso livello di rientro della parola chiave if
corrispondente. È possibile avere una o più clausole elif
nell'istruzione. La clausola else
è facoltativa. Se la clausola else
non viene utilizzata e tutte le espressioni vengono valutate False
, nessuna delle istruzioni verrà eseguita.
Le condizioni sono valutate in sequenza. Quando viene restituita una condizione True
, le condizioni rimanenti non vengono eseguite e il controllo del programma si sposta alla fine delle istruzioni if
.
Aggiungiamo una clausola elif
allo script precedente:
number = int(input('Enter a number: '))
if number > 5:
print(number, 'is greater than 5.')
elif number < 5:
print(number, 'is less than 5.')
else:
print(number, 'is equal to 5.')
A differenza della maggior parte dei linguaggi di programmazione, Python non ha dichiarazioni switch
o case
. Una sequenza di più istruzioni elif
può essere utilizzata come sostituto di switch
o case
.
Dichiarazioni if nidificate
Python ti consente di nidificare le istruzioni if
all'interno delle istruzioni if
. Generalmente, dovresti sempre evitare un rientro eccessivo e provare a utilizzare elif
invece delle istruzioni di nidificazione if
.
Il seguente script ti chiederà di inserire tre numeri e stamperà il numero più grande tra i numeri.
number1 = int(input('Enter the first number: '))
number2 = int(input('Enter the second number: '))
number3 = int(input('Enter the third number: '))
if number1 > number2:
if number1 > number3:
print(number1, 'is the largest number.')
else:
print(number3, 'is the largest number.')
else:
if number2 > number3:
print(number2, 'is the largest number.')
else:
print(number3, 'is the largest number.')
Ecco come apparirà l'output:
Enter the first number: 455
Enter the second number: 567
Enter the third number: 354
567 is the largest number.
Condizioni multiple
La logica degli operatori or
e and
consentono di combinare più condizioni nelle istruzioni if
.
Ecco un'altra versione dello script per stampare il numero più grande tra i tre numeri. In questa versione, anziché delle istruzioni if
nidificate, utilizzeremo l'operatore logico and
e elif
.
number1 = int(input('Enter the first number: '))
number2 = int(input('Enter the second number: '))
number3 = int(input('Enter the third number: '))
if number1 > number2 and number1 > number3:
print(number1, 'is the largest number.')
elif number2 > number3 and number2 > number3:
print(number2, 'is the largest number.')
else:
print(number3, 'is the largest number.')
Conclusione
Le istruzioni if
, if..else
e if..elif..else
consentono di controllare il flusso di esecuzione Python valutando determinate condizioni.