Skip to content

Dichiarazione if in Python (if, elif, else)

Python

L’istruzione if (if… elif… else…) viene utilizzata per l’esecuzione condizionale in Python.

  • Nozioni di base sull’istruzione if (if, elif, else)
  • Condizioni con operatori di confronto
  • Condizioni con numeri, elenchi, ecc.
  • Condizioni con operatori booleani (e, o, non)
  • Vieni a scrivere un’espressione condizionata su più righe

Python fornisce anche espressioni condizionali che ti consentono di scrivere operazioni come l’istruzione if in una riga. Vedere il seguente articolo per i dettagli.

Nozioni di base sull’istruzione if (if, elif, else)

La forma base dell’istruzione se è la seguente:

if expression 1:
    Executed when expression 1 is True
elif expression 2:
    Executed when expression 1 is False and expression 2 is True
elif expression 3:
    Executed when expression 1, 2 are False and expression 3 is True
...
else:
    Executed when all expressions are False

elif in Python è equivalente a else se in linguaggio C.

Le clausole elif e else possono essere omesse se è presente una sola condizionale o se non è necessario eseguire per False.

Condizioni con operatori di confronto

È possibile specificare condizioni con operatori di confronto.

Gli operatori di confronto in Python sono i seguenti:

  • x < y
  • x <= y
  • x > y
  • x >= y
  • x == y
  • x!= y
  • x è y
  • x non è y
  • x in y
  • x non in y

Per esempio:

def if_test(num):
    if num > 100:
        print('100 < num')
    elif num > 50:
        print('50 < num <= 100')
    elif num > 0:
        print('0 < num <= 50')
    elif num == 0:
        print('num == 0')
    else:
        print('num < 0')

if_test(1000)
# 100 < num

if_test(70)
# 50 < num <= 100

if_test(0)
# num == 0

if_test(-100)
# num < 0

In Python, puoi scrivere come a < x < b.

def if_test2(num):
    if 50 < num < 100:
        print('50 < num < 100')
    else:
        print('num <= 50 or num >= 100')

if_test2(70)
# 50 < num < 100

if_test2(0)
# num <= 50 or num >= 100

== vengono utilizzati per venire i valori e is, non utilizzato per l’identità degli oggetti.

Ad esempio, quando sino l’intero int e il numero in virgola mobile float, se i valori sono uguali, == restituisce True ma ottiene False perché sono diversi.

i = 10
print(type(i))
# <class 'int'>

f = 10.0
print(type(f))
# <class 'float'>

print(i == f)
# True

print(i is f)
# False

Usando in e non in, è possibile definire una condizione se un elenco o una stringa contiene un elemento o una sottostringa specifica.

def if_test_in(s):
    if 'a' in s:
        print('a is in string')
    else:
        print('a is NOT in string')

if_test_in('apple')
# a is in string

if_test_in('melon')
# a is NOT in string

Condizioni con numeri, elenchi, ecc.

Nell’espressione condizionale dell’istruzione se, è possibile specificare un oggetto come un numero o un elenco.

if 10:
    print('True')
# True

if [0, 1, 2]:
    print('True')
# True

I seguenti oggetti sono considerati False in Python.

Tutto il resto è considerato vero.

Puoi usare bool() per verificare se un oggetto è considerato True o False. Si noti che la stringa fatta, eccezione per la stringa vuota ”, è considerata vera, quindi anche la stringa ‘falso’ è considerata vera.

print(bool(10))
# True

print(bool(0.0))
# False

print(bool([]))
# False

print(bool('False'))
# True

Puoi scrivere facilmente condizioni come “quando l’elenco è vuoto”.

def if_test_list(l):
    if l:
        print('list is NOT empty')
    else:
        print('list is empty')

if_test_list([0, 1, 2])
# list is NOT empty

if_test_list([])
# list is empty

Si noti che come nell’esempio sopra, una stringa che non è la stringa vuota ” è considerata vera, quindi anche la stringa ‘falso’ è considerata vera. Utilizzare strtobool() nel modulo distutils.util nel modulo per determinate stringhe come “True” e “False” in 1, 0. Vedere il seguente articolo.

Condizioni con operatori booleani (e, o, non)

È possibile combinare più condizioni utilizzando gli operatori booleani (e, o, non).

def if_test_and_not(num):
    if num >= 0 and not num % 2 == 0:
        print('num is positive odd')
    else:
        print('num is NOT positive odd')

if_test_and_not(5)
# num is positive odd

if_test_and_not(10)
# num is NOT positive odd

if_test_and_not(-10)
# num is NOT positive odd

Mediante la valutazione del cortocircuito, xeyexoy restituiscono xoy, non Vero o Falso. Finché viene utilizzato nell’espressione condizionale dell’istruzione se, il suo valore viene valutato come Vero o Falso, quindi non è necessario preoccuparsene.

È possibile utilizzare eeo più volte.

def if_test_and_not_or(num):
    if num >= 0 and not num % 2 == 0 or num == -10:
        print('num is positive odd or -10')
    else:
        print('num is NOT positive odd or -10')

if_test_and_not_or(5)
# num is positive odd or -10

if_test_and_not_or(10)
# num is NOT positive odd or -10

if_test_and_not_or(-10)
# num is positive odd or -10

Vieni a scrivere un’espressione condizionata su più righe

Se usi più espressioni condizionali con eoo, la riga potrebbe diventare troppo lunga.

Usando la barra rovesciata o racchiudendola tra parentesi (), puoi scrivere un’espressione condizionale su più righe.

def if_test_and_backslash(num):
    if num >= 0 
       and not num % 2 == 0:
        print('num is positive odd')
    else:
        print('num is NOT positive odd')

if_test_and_backslash(5)
# num is positive odd

def if_test_and_brackets(num):
    if (num >= 0
        and not num % 2 == 0):
        print('num is positive odd')
    else:
        print('num is NOT positive odd')

if_test_and_brackets(5)
# num is positive odd

Questo non è limitato alle istruzioni se e può essere utilizzato ovunque nel codice Python. Vedere il seguente articolo per i dettagli.