
En Python, les valeurs de vérité (valeurs booléennes) sont représentées par des objets de type booléen, True et False. Les résultats des opérateurs de comparaison sont renvoyés sous la forme True ou False et sont utilisés dans les expressions conditionnelles des instructions if, etc.
Cet article décrit le contenu suivant :
- bool est une sous-classe de int
- Vrai et Faux sont équivalents à 1 et 0
- Test de valeur de vérité en Python
- Convertissez les autres types en booléen :
bool()
- Convertissez une chaîne spécifique en 1, 0 :
distutils.util.strtobool()
- Convertissez une chaîne spécifique en 1, 0 :
- Convertir bool en d’autres types
- Convertir bool en nombre :
int(), float(), complex()
- Convertissez bool en chaîne :
str()
- Autres types
- Convertir bool en nombre :
bool est une sous-classe de int
True et False sont des objets de type booléen.
print(type(True))
# <class 'bool'>
print(type(False))
# <class 'bool'>
Vous pouvez confirmer que bool est une sous-classe du type entier int avec la fonction intégrée issubclass().
print(issubclass(bool, int))
# True
Vrai et Faux sont équivalents à 1 et 0
Vrai et Faux sont équivalents à 1 et 0.
print(True == 1)
# True
print(False == 0)
# True
Puisque bool est une sous-classe de int, il peut être calculé comme des entiers.
print(True + True)
# 2
print(True * 10)
# 10
Par conséquent, vous pouvez compter le nombre de vrais dans la liste des vrais et des faux à l’aide de la fonction intégrée sum() qui calcule la somme des nombres stockés dans la liste.
print(sum([True, False, True]))
# 2
L’expression du générateur peut être utilisée pour compter le nombre d’éléments dans une liste qui remplit les conditions. Utilisez [] pour les compréhensions de liste et () pour les expressions de générateur.
Lorsque l’expression du générateur est le seul argument de la fonction, () peut être omis, il peut donc être écrit comme suit.
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
Test de valeur de vérité en Python
En Python, les objets autres que True et False sont également considérés comme vrais ou faux dans l’expression conditionnelle de l’instruction if.
Les objets suivants sont considérés comme faux, comme dans la documentation officielle ci-dessus.
- Constantes définies comme fausses :
None and False
- Zéro de n’importe quel type numérique :
0, 0.0, 0j, Decimal(0), Fraction(0, 1)
- Séquences et collections vides :
'', (), [], {}, set(), range(0)
Tous les autres objets sont considérés comme True.
Par exemple, une chaîne non vide est considérée comme True.
if 'abc':
print('True!')
# True!
Vous pouvez vérifier si un objet est considéré comme vrai ou faux en utilisant bool() expliqué ci-dessous.
Convertissez les autres types en booléen :bool()
Vous pouvez convertir des objets d’autres types en True ou False avec bool() selon le test de valeur de vérité décrit ci-dessus.
Toute chaîne non vide str, qu’elle soit ‘True’ ou ‘False’, est considérée comme True. Une chaîne vide est considérée comme fausse. Si vous souhaitez convertir en fonction du contenu de la chaîne, utilisez distutils.util.strtobool() expliqué ci-dessous.
print(bool('True'))
print(bool('False'))
print(bool('abc'))
# True
# True
# True
print(bool(''))
# False
Tout nombre qui n’est pas 0, qu’il s’agisse d’un entier int, d’un nombre à virgule flottante float ou d’un nombre complexe complexe, est considéré comme True. S’il vaut 0, il est considéré comme Faux.
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
Toutes les séquences et collections non vides, qu’il s’agisse de listes, de tuples, d’ensembles ou de dictionnaires, sont considérées comme vraies. Les séquences et les collections vides sont considérées comme fausses.
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
Aucun n’est considéré comme faux.
print(bool(None))
# False
Convertissez une chaîne spécifique en 1, 0 :distutils.util.strtobool()
Comme mentionné ci-dessus, bool() convertit la chaîne ‘False’ en True.
Vous pouvez convertir une chaîne en fonction de son contenu avec distutils.util.strtobool().
Convertit une représentation sous forme de chaîne de vérité en vrai (1) ou faux (0). Les vraies valeurs sont y, yes, t, true, on et 1 ; les valeurs fausses sont n, no, f, false, off et 0. Lève ValueError si val est autre chose.
9. Référence API – distutils.util.strtobool() — Documentation Python 3.9.1
Vous devez importer distutils.util. Il est inclus dans la bibliothèque standard, donc aucune installation supplémentaire n’est requise.
distutils.util.strtobool() renvoie 1 pour les chaînes ‘y’, ‘yes’, ‘true’, ‘on’, ‘1’ et renvoie 0 pour ‘n’, ‘no’, ‘f’, ‘false ‘, ‘désactivé’, ‘0’.
Peu importe qu’il soit en majuscules ou en minuscules, vous pouvez donc utiliser ‘TRUE’, ‘True, ‘YES’, etc.
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
Augmente ValueError pour les autres valeurs.
# print(strtobool('abc'))
# ValueError: invalid truth value 'abc'
Si vous souhaitez accepter une entrée autre que les chaînes spécifiées, vous devez gérer les exceptions.
try:
strtobool('abc')
except ValueError as e:
print('other value')
# other value
Le nom est strtobool(), mais la valeur de retour est int (1 ou 0) au lieu de bool (True ou False).
print(type(strtobool('true')))
# <class 'int'>
Dans les expressions conditionnelles telles que les instructions if, 1 et 0 sont considérés comme vrais et faux, il n’y a donc aucun problème à les utiliser tels quels.
if strtobool('yes'):
print('True!')
# True!
Convertir bool en d’autres types
Convertir bool en nombre :int(), float(), complex()
Comme mentionné ci-dessus, puisque True et False sont équivalents à 1 et 0, ils peuvent être convertis en 1 et 0 des types respectifs avec int(), float() et 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
Convertissez bool en chaîne :str()
Vous pouvez convertir True et False en chaînes ‘True’ et ‘False’ avec str().
print(str(True))
print(str(False))
# True
# False
print(type(str(True)))
print(type(str(False)))
# <class 'str'>
# <class 'str'>
Les chaînes non vides sont considérées comme vraies, donc si vous convertissez False en chaînes avec str() puis revenez au type bool avec bool(), ce sera True.
print(bool(str(False)))
# True
Autres types
list() et tuple() ne peuvent pas convertir les types booléens en listes et tuples. Elle ne sera pas convertie en une liste vide.
# print(list(True))
# TypeError: 'bool' object is not iterable