web-dev-qa-db-fra.com

Opérateur logique Python ET

Je suis un peu confus avec les résultats obtenus avec les opérateurs logiques de Python. Je suis débutant et étudie avec l’utilisation de quelques livres, mais ils n’expliquent pas autant de détails que je le voudrais. 

voici mon propre code:

five = 5
two = 2

print five and two

>> 2

Il semble ne produire que les deux variables.

five = 5
two = 2
zero = 0

print five and two and zero

J'ai donc ajouté un autre entier variable. Ensuite, j'ai imprimé et obtenu le résultat suivant:

>> 0

Que se passe-t-il avec Python en arrière-plan? Pourquoi la sortie n’est-elle pas quelque chose comme 7 ou 5, 2.

34
BubbleMonster

Les opérateurs booléens Python renvoient la dernière valeur évaluée, pas True/False. Les docs ont une bonne explication à ce sujet:

L'expression x and y évalue d'abord x; si x est false, sa valeur est renvoyée; sinon, y est évalué et la valeur résultante est renvoyée.

38
tdelaney

Comme note de côté: (je n'ai pas assez de représentants pour un commentaire) L'opérateur AND n'est pas nécessaire pour imprimer plusieurs variables. Vous pouvez simplement séparer les noms de variables par des virgules, telles que print five, two au lieu de print five AND two. Vous pouvez également utiliser des échappements pour ajouter des variables à une ligne d'impression, telles que print "the var five is equal to: %s" %five. Plus d'informations à ce sujet ici: http://docs.python.org/2/library/re.html#simulating-scanf

Comme d’autres l’ont dit, AND est un opérateur logique et permet de chaîner plusieurs conditions, telles que 

if (five == 5) AND (two == 2):
    print five, two
5
aChipmunk

Les opérateurs booléens And renverront la première valeur 5 si l'expression évaluée est false et la deuxième valeur 2 si l'expression évaluée est true. Étant donné que 5 et 2 sont des valeurs réelles, non fausses et non nulles, l'expression est évaluée à true.

Si vous voulez imprimer les deux variables, vous pouvez les concaténer en une chaîne et les imprimer.

five = 5
two = 2
print five + " and " + two

Ou pour imprimer leur somme, vous pouvez utiliser

print five + two

Ce document explique comment utiliser les opérateurs booléens logiques.

3
Evin Ugur

Cette AND en Python est un équivalent du && en Java par exemple. Cela ne signifie pas le et en anglais. La AND est un opérateur logique. Supposons que cinq correspond à 5 et deux à 2. Selon la documentation Python: Les expressions x et y évaluent d'abord x; si x est faux, sa valeur est renvoyée; sinon, y est évalué et la valeur résultante est renvoyée. Fondamentalement, il évalue le dernier entier de votre cas, ce qui est vrai.

if (five and two):
...     print "True"
... else:
...     print "False"

AND est un opérateur logique, destiné à tester la logique pour un cas spécifique, et non un opérateur arithmétique. Si vous voulez obtenir des résultats tels que 7 pour cinq et deux, vous devriez plutôt utiliser "+", ce qui signifie ajouter deux entiers. Voir ci-dessous:

>>> five = 5
>>> two = 2
>>> print five + two
7
1
Ali Gajani

Essayez 0 et 9.

Le résultat est 0 car la valeur de 0 est false. L'opérande à gauche de l'opérateur and est False, ainsi l'expression entière est False et renvoie 0

1
bobalukalallu

En Python, toute valeur entière non nulle est vraie; zéro est faux. 

Les valeurs de l'OP sont toutes deux non nulles.

L’opérateur AND teste de gauche à droite, 

with et, si toutes les valeurs sont True, retourne la dernière valeur évaluée . Si une valeur est fausse, retourne la première.

Puisque les deux sont non nuls, les deux sont vrais, donc la dernière valeur est retournée 

0