[Python] L'opérateur booléen (ou / et) ne renvoie pas de valeur booléenne

Il existe des opérateurs ʻor, ʻand et not en Python, mais ils sont appelés opérateurs booléens.

Valeur de vérité en Python

Tout objet peut être représenté comme une valeur de vérité (valeur vraie / fausse) en Python, et les fonctions intégrées suivantes sont jugées fausses.

De plus, si la classe de l'objet définit la méthode __bool__ () et qu'elle renvoie False, ou si elle définit la méthode __len__ () et renvoie 0, elle sera jugée fausse. ..

La fonction intégrée bool () est utilisée pour le jugement.

>>> bool(None)
False
>>> bool(False)
False
>>> bool(0)
False
>>> bool("")
False
>>> bool([])
False
#Tout ce qui n'est pas faux est vrai
>>> bool("0")
True
>>> bool([False])
True

Comment utiliser ou

ʻUtilisé lorsque vous voulez déterminer si A ou B est vrai`. Bien sûr, il peut être utilisé en dehors de la syntaxe de contrôle telle que l'instruction if.

>>> x = True
>>> y = False
>>> x or y
True
>>> bool(x or y)
True

Par ailleurs, «ou» et «et» décrits plus loin ne renvoient pas de valeur booléenne, évaluent la valeur de l'objet comparé à partir de la gauche et le renvoient tel quel lorsque la valeur de retour est fixée.

Dans l'exemple ci-dessus (x ou y)

--Si x est vrai, y n'est pas évalué et x est renvoyé (même si y est vrai, x est renvoyé)

Ça marche

>>> a = 0 #Définir une valeur dont la valeur de vérité est True
>>> b = 1 #Définir une valeur dont la valeur de vérité est False
>>> a or b #Puisque b est vrai, b est retourné
1
>>> b or a #Même s'il est inversé, b est Vrai, donc b est renvoyé.
1

>>> b = "" #Réaffecter une valeur différente de celle dont la valeur de vérité est False
a or b #b est renvoyé car a est False
""

Au fait, ʻor` se comporte de la même manière même si deux ou plus sont connectés, et est évalué à partir de la gauche.

>>> a = 0
>>> b = 1
>>> c = 2
>>> a or b or c
1

Il est facile de le considérer comme un opérateur qui renvoie une valeur de vérité, mais n'oubliez pas.

Comment utiliser et

ʻAnd peut être utilisé pour déterminer si ʻA et B sont tous les deux vrais.

Comme pour «et», la valeur de retour est l'objet à évaluer, donc une valeur booléenne n'est pas renvoyée.

>>> x = 0
>>> y = 1
>>> x and y
0

Comme pour «ou», l'objet est renvoyé lorsque le résultat est confirmé.

--Retourne x si x est faux

Ça marche.

Veuillez noter que nous n'avons pas strictement vérifié que toutes les comparaisons sont vraies, car les faux objets renverront les résultats dès qu'ils seront trouvés.

Deux ou plus peuvent être connectés pour «et».

>>> a = 0
>>> b = 1
>>> c = 2
>>> a and b and c #Renvoie a parce que a est faux
0
>>> d = 10
>>> d and b and c #Lorsque d est vrai, b est vrai et c est confirmé, le résultat est confirmé, donc c est renvoyé.
2

Comment ne pas utiliser

not est un opérateur qui représente la négation, et prend seulement une valeur après lui, telle que not False, et annule cette valeur.

Contrairement aux deux opérateurs décrits ci-dessus, il renvoie une valeur booléenne.

>>> x = 0
>>> y = 1
>>> not x #x est une valeur qui devient False, mais si elle n'est pas ajoutée, elle devient True.
True
>>> not y #y est une valeur qui est True, mais si elle n'est pas ajoutée, elle devient False.
False

«not» a une priorité plus élevée que «ou» et «et» et est évalué en premier.

>>> a = 0
>>> b = 1
>>> c = 2
>>> not a and b and c #False a est refusé et devient vrai, renvoyant le dernier objet évalué c car tout est vrai
c
>>> d = 10
>>> d and not b and c #Tout était vrai, mais b est refusé et faux, donc b est retourné
False

Bien qu'elle soit basique, il est facile d'oublier la valeur de retour, je voudrais donc l'utiliser consciemment.

Recommended Posts

[Python] L'opérateur booléen (ou / et) ne renvoie pas de valeur booléenne
Les opérations booléennes python ne renvoient pas de valeurs booléennes
[Introduction à Python] Comment utiliser l'opérateur booléen (et ・ ou ・ non)
Opérateur de bits Python et somme logique
Python ou et et opérateur trap
[Python] renvoie A [ou / et] B
La valeur de retour de l'opération booléenne Python n'est pas toujours de type booléen
[Python of Hikari-] Chapitre 06-04 Fonctions (arguments et valeurs de retour 3)
[Python of Hikari-] Chapitre 06-02 Fonction (argument et valeur de retour 1)
[Python of Hikari-] Chapitre 06-03 Fonctions (arguments et valeurs de retour 2)
la version de python ne change pas
Python, rendement, retour et parfois rendement de
[Introduction à Udemy Python3 + Application] 49. Citation de fonction et déclaration de valeur de retour
Python / Numpy> Lien> Différence entre numpy.random et random.random> thread-safe ou non
[Python] Modèle de base et utilisation de l'instruction if (opérateur de comparaison et opérateur booléen)
Python ne génère pas d'erreurs ou de sortie simplement parce que le retrait est mal aligné
Anglais technique> vous utilisez les opérateurs booléens [et, ou, et non] pour ...> Opérations booléennes - et, ou, non
[Python] Utiliser et et ou lors de la création de variables
[VScode] Le format autopep8 ne fonctionne pas [Python]
Connectez beaucoup de Python ou et et
Copiez le fichier et réécrivez la valeur de la cellule @python
Virtualenv ne fonctionne pas sur Python 3.5 (Windows)
Python> Python n'inclut pas le dernier décalage
Utilisation d'opérateurs non logiques de ou en python
Opencv4.1 + Windows10 + Python 3.7.5 cv2.VideoCapture ne s'affiche pas correctement
DL, valeur d'octet et suppression de fichier en Python3
Jinja2 2.9.6 ne fonctionne pas sur la série Lambda Python 3
python memo- "sinon A et B" était "si (pas A) et B"
[Python] Qui doit être utilisé, renvoyer ou renvoyer Aucun
[Python] Expression (1,2) ne fait pas de taple avec des parenthèses
Ce serait sage si vous pouviez écrire quelque chose comme booléen et "A" ou "B" [Python] [Mais]