Les opérations booléennes python ne renvoient pas de valeurs booléennes

introduction

Pouvez-vous répondre à la sortie du code suivant?

question_1.py


print('penguin' and 'PENGUIN')

image.png

Si la réponse n'est pas `` PENGUIN '', vous voudrez peut-être lire cet article.

Évaluation des objets en Python

Tout d'abord, passons en revue brièvement les objets Python. En Python, tous les objets peuvent être évalués comme True ou False. En particulier, les objets évalués comme False sont réduits à ce qui suit (cité à partir de la référence).

Les quatre ci-dessus sont souvent utilisés, il est donc pratique de les retenir. Par conséquent, en Python, il est possible d'attribuer directement un objet à une expression conditionnelle et de l'évaluer comme suit.

eval_obj.py


penguin_list = ['Emperor', 'Humboldt', 'Adelie']
if (penguin_list):
    print("Festival des pingouins")
else:
    print("Le pingouin est éteint")
#Résultat d'exécution:Festival des pingouins

or Ou s'appelle une somme logique, et il est courant de retourner vrai si x ou y est vrai lorsque x ou y ''`, et faux dans le cas contraire. Comme nous l'avons vu précédemment, en Python, les objets sont évalués comme True ou False. Par conséquent, l'évaluation suivante est possible.

or_peugin.py


print('penguin' or None)

Eh bien, normalement, ce qui précède renverrait True, mais pas Python. Le résultat est le suivant.

Résultat de sortie


penguin

En fait, en Python, x ou y renvoie x si x vaut True, y sinon. En bref, __ se présente comme une opération de somme logique normale et renvoie l'objet lorsque la valeur est fixe. __ Voici quelques exemples.

or_sample.py


print('Emperor' or 'Humboldt')
#Résultat de sortie: Empereur
print('Humboldt' or 'Emperor')
#Résultat de sortie: Humboldt
print('penguin' or 0)
#Résultat de sortie: pingouin
print(False or 'penguin')
#Résultat de sortie: pingouin
print(0 or False)
#Résultat de sortie: Faux
print(False or 0)
#Résultat de sortie: 0

and Et est appelé un produit logique, et il est courant de renvoyer true si x et y sont tous les deux vrais quand x et y```, et false dans le cas contraire. Cependant, en Python, la valeur de retour n'est pas une valeur booléenne. En Python, x et y retournent x si x prend la valeur False, y sinon. En bref, __ se présente comme une opération produit logique normale et renvoie l'objet lorsque la valeur est fixe. __ Voici quelques exemples.

and_sample.py


print('Emperor' and 'Humboldt')
#Résultat de sortie: Humboldt
print('Humboldt' and 'Emperor')
#Résultat de sortie: Empereur
print('penguin' and 0)
#Résultat de sortie: 0
print(False and 'penguin')
#Résultat de sortie: Faux
print(0 and False)
#Résultat de sortie: 0
print(False and 0)
#Résultat de sortie: Faux

finalement

En raison du récent boom de l'apprentissage automatique et de la grammaire simple de python, je pense qu'il y a beaucoup de gens qui ont affaire à python d'une manière ou d'une autre (y compris moi-même). Cependant, il est intéressant d'étudier correctement, et cela peut provoquer des bogues inattendus et des comportements inattendus que d'une certaine manière ne comprennent pas. Jusqu'à hier, l'auteur était également "une opération logique est décidée pour renvoyer une valeur booléenne (nez hoji)", il se peut donc qu'il ait créé une créature ridicule dans un avenir proche et l'a publié dans le monde. Comme mentionné dans les références, [Introduction to Python Practice] publié cette année (https://www.amazon.co.jp/Python%E5%AE%9F%E8%B7%B5%E5%85%A5 % E9% 96% 80-% E8% A8% 80% E8% AA% 9E% E3% 81% AE% E5% 8A% 9B% E3% 82% 92% E5% BC% 95% E3% 81% 8D% E5% 87% BA% E3% 81% 97% E3% 80% 81% E9% 96% 8B% E7% 99% BA% E5% 8A% B9% E7% 8E% 87% E3% 82% 92% E9% AB% 98% E3% 82% 81% E3% 82% 8B-WEB-PRESS-plus% E3% 82% B7% E3% 83% AA% E3% 83% BC% E3% 82% BA / dp / 429711111X / ref = sr_1_1? dchild = 1 & hvadid = 386600561258 & hvdev = c & jp-ad-ap = 0 & keywords = python% E5% AE% 9F% E8% B7% B5% E5% 85% A5% E9% 96% 80 & qid = 1594634033 & sr = 8-1 & tag = yahhyd-22) est un excellent livre pour apprendre Python. Profitons de cette occasion pour essayer "Somehow Python"!

Les références

Recommended Posts

Les opérations booléennes python ne renvoient pas de valeurs booléennes
[Python] L'opérateur booléen (ou / et) ne renvoie pas de valeur booléenne
La valeur de retour de l'opération booléenne Python n'est pas toujours de type booléen
La liste Python n'est pas une liste
la version de python ne change pas
[Python] renvoie A [ou / et] B
Lors de l'incrémentation de la valeur d'une clé qui n'existe pas
Un codec Python spécial qui semble savoir mais ne sait pas
[VScode] Le format autopep8 ne fonctionne pas [Python]
Virtualenv ne fonctionne pas sur Python 3.5 (Windows)
[Python] [LINE Bot] Créer un robot LINE de retour de perroquet
Python> Python n'inclut pas le dernier décalage
EOFError: EOF lors de la lecture d'une ligne n'est pas réglé sur la valeur d'entrée standard
Opencv4.1 + Windows10 + Python 3.7.5 cv2.VideoCapture ne s'affiche pas correctement
Remarque Python: lors de l'attribution d'une valeur à une chaîne
Pourquoi Python doit-il écrire un deux-points?
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] Expression (1,2) ne fait pas de taple avec des parenthèses
Retour anticipé de Python
[python] Opération vectorielle
Fonctionnement du système d'exploitation Python
[Python] Opération de matrice
[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)
Entrée clé qui n'attend pas l'entrée clé en Python
Pourquoi ne pas créer facilement une table élégante avec Python?
python> vérifier NoneType ou non> si a == None:> si a vaut None:
C | Python> Opération modulo de valeur négative (%)> C: renvoie moins | Python: renvoie plus
[Python of Hikari-] Chapitre 06-03 Fonctions (arguments et valeurs de retour 2)
Que signifie le dernier () dans une fonction en Python?
L'histoire selon laquelle pyenv n'a pas passé la commande d'exécution python PATH