
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.
- costante costante falso:
None and False.
- zero di qualsiasi tipo numerico:
0, 0.0, 0j, Decimal(0), Fraction(0, 1)
- raccolte e sequenze:
'', (), [], {}, set(), range(0)
Built-in Types — Python 3.8.5 documentation
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.