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 se a e b sono uguali.
  • a != b - Vero se a e b non sono uguali.
  • a > b - Vero se a è maggiore di b.
  • a >= b - Vero se a è uguale o maggiore di b.
  • a < b - Vero se a è inferiore a b.
  • a <= b - Vero se a è uguale o inferiore a b.

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.