
In Python, i valori di verità (valori booleani) sono rappresentati da oggetti di tipo bool, True e False. I risultati degli operatori di confronto vengono restituiti come Vero o Falso e vengono utilizzati nelle espressioni condizionali nelle istruzioni if e così via.
Questo articolo descrive i seguenti contenuti:
- bool è una sottoclasse di int
- Vero e Falso equivalgono a 1 e 0
- Prova del valore di verità in Python
- Converti altri tipi in bool:
bool()
- Converti una stringa specifica in 1, 0:
distutils.util.strtobool()
- Converti una stringa specifica in 1, 0:
- Converti bool in altri tipi
- Converti bolo in numero:
int(), float(), complex()
- Converti bool in stringa:
str()
- Altri tipi
- Converti bolo in numero:
bool è una sottoclasse di int
True e False sono oggetti di tipo bool.
print(type(True))
# <class 'bool'>
print(type(False))
# <class 'bool'>
Puoi confermare che bool è una sottoclasse del tipo intero int con la funzione incorporata issubclass().
print(issubclass(bool, int))
# True
Vero e Falso equivalgono a 1 e 0
Vero e Falso equivalgono a 1 e 0.
print(True == 1)
# True
print(False == 0)
# True
Poiché bool è una sottoclasse di int, può essere calcolata come numeri interi.
print(True + True)
# 2
print(True * 10)
# 10
Pertanto, puoi contare il numero di Vero nell’elenco di Vero e Falso utilizzando la funzione incorporata sum() che calcola la somma dei numeri memorizzati nell’elenco.
print(sum([True, False, True]))
# 2
L’espressione del generatore può essere utilizzata per contare il numero di elementi in un elenco che soddisfa le condizioni. Usa [] per la comprensione degli elenchi e () per le espressioni del generatore.
Quando l’espressione del generatore è l’unico argomento della funzione, () può essere omesso, quindi può essere scritto come segue.
l = [0, 1, 2, 3, 4]
print([i > 2 for i in l])
# [False, False, False, True, True]
print(sum(i > 2 for i in l))
# 2
Prova del valore di verità in Python
In Python, anche gli oggetti diversi da True e False sono considerati veri o falsi nell’espressione condizionale dell’istruzione if.
I seguenti oggetti sono considerati Falsi, come nella documentazione ufficiale di cui sopra.
- Costanti definitivo falso:
None and False
- Zero di qualsiasi tipo numerico:
0, 0.0, 0j, Decimal(0), Fraction(0, 1)
- Sequenze e raccolte:
'', (), [], {}, set(), range(0)
Tutti gli altri oggetti sono considerati Vero.
Ad esempio, una stringa non vuota è considerata True.
if 'abc':
print('True!')
# True!
Puoi controllare se un oggetto è considerato True o False usando bool() spiegato di seguito.
Converti altri tipi in bool:bool()
Puoi scegliere oggetti di altri in True o False con bool() in base al test del valore di verità sopra tipi.
Qualsiasi stringa str non vuota, sia ‘True’ che ‘False’, è considerata True. Una stringa vuota è considerata falsa. Se vuoi voler in base al contenuto della stringa, usa distutils.util.strtobool() spiegato di seguito.
print(bool('True'))
print(bool('False'))
print(bool('abc'))
# True
# True
# True
print(bool(''))
# False
Qualsiasi numero diverso da 0, sia esso un intero int, un numero a virgola mobile float o un numero complesso complesso, è considerato vero. Se è 0, è considerato Falso.
print(bool(1))
print(bool(2))
print(bool(1.23))
print(bool(-1))
# True
# True
# True
# True
print(bool(0))
print(bool(0.0))
print(bool(0j))
# False
# False
# False
Tutte le sequenze e le raccolte non vuote, esse sono liste, tuple, insiemi o dizionari, sono consider vere. Le sequenze e le raccolte vuote sono considerate false.
print(bool([1, 2, 3]))
print(bool((1, 2, 3)))
print(bool({1, 2, 3}))
print(bool({'k1': 1, 'k2':2, 'k3': 3}))
# True
# True
# True
# True
print(bool([]))
print(bool(()))
print(bool({}))
# False
# False
# False
Nessuno è considerato falso.
print(bool(None))
# False
Converti una stringa specifica in 1, 0:distutils.util.strtobool()
Come accennato in precedenza, bool() converte la stringa ‘False’ in True.
Puoi scegliere una stringa in base al suo contenuto con distutils.util.strtobool().
Converti una rappresentazione in stringa della verità in vero (1) o falso (0). I valori veri sono y, yes, t, true, su e 1; i valori false sono n, no, f, false, off e 0. Aumenta ValueError se val è qualcos’altro.
9. Riferimento API – distutils.util.strtobool() — Documentazione Python 3.9.1
Devi importare distutils.util. È incluso nella libreria standard, quindi non è richiesta alcuna installazione aggiuntiva.
distutils.util.strtobool() restituisce 1 per le stringhe ‘y’, ‘yes’, ‘true’, ‘on’, ‘1’ e restituisce 0 per ‘n’, ‘no’, ‘f’, ‘false ‘ , ‘spento’, ‘0’.
Non importa se è maiuscolo o minuscolo, quindi puoi usare “TRUE”, “True”, “YES”, ecc.
from distutils.util import strtobool
print(strtobool('true'))
print(strtobool('True'))
print(strtobool('TRUE'))
# 1
# 1
# 1
print(strtobool('t'))
print(strtobool('yes'))
print(strtobool('y'))
print(strtobool('on'))
print(strtobool('1'))
# 1
# 1
# 1
# 1
# 1
print(strtobool('false'))
print(strtobool('False'))
print(strtobool('FALSE'))
# 0
# 0
# 0
print(strtobool('f'))
print(strtobool('no'))
print(strtobool('n'))
print(strtobool('off'))
print(strtobool('0'))
# 0
# 0
# 0
# 0
# 0
Aumenta ValueError per altri valori.
# print(strtobool('abc'))
# ValueError: invalid truth value 'abc'
Se vuoi accettare input diversi dalle stringhe specifiche, devi gestire le eccezioni.
try:
strtobool('abc')
except ValueError as e:
print('other value')
# other value
Il nome è strtobool(), ma il valore restituito è int (1 o 0) invece di bool (True o False).
print(type(strtobool('true')))
# <class 'int'>
Nelle espressioni condizionali come le istruzioni if, 1 e 0 sono considerati Vero e Falso, quindi non ci sono problemi nell’usarli così come sono.
if strtobool('yes'):
print('True!')
# True!
Converti bool in altri tipi
Converti bolo in numero:int(), float(), complex()
Come accennato in precedenza, poiché True e False equivalgono a 1 e 0, possono essere convertiti in 1 e 0 dei rispettivi tipi con int(), float() e complex().
print(int(True))
print(int(False))
# 1
# 0
print(float(True))
print(float(False))
# 1.0
# 0.0
print(complex(True))
print(complex(False))
# (1+0j)
# 0j
Converti bool in stringa:str()
Puoi selezionare True e False in stringhe ‘True’ e ‘False’ con str().
print(str(True))
print(str(False))
# True
# False
print(type(str(True)))
print(type(str(False)))
# <class 'str'>
# <class 'str'>
Le stringhe non vuote sono Consider True, quindi se converti False in stringhe con str() e poi di nuovo in bool con bool(), sarà True.
print(bool(str(False)))
# True
Altri tipi
list() e tuple() non possono avere i tipi bool in liste e tuple. Non verrà convertito in un elenco vuoto.
# print(list(True))
# TypeError: 'bool' object is not iterable