Cómo usar booleano ‘y’ en Python

En C # podemos usar && (booleano y) así:

 int i = 5; int ii = 10; if(i == 5 && ii == 10) { Console.WriteLine("i is 5, and ii is 10"); } Console.ReadKey(true); 

Pero intente eso con python:

 i = 5 ii = 10 if i == 5 && ii == 10: print "i is 5 and ii is 10"; 

Me sale un error: SyntaxError: invalid syntax

Si uso un solo & , al menos no obtengo ningún error de syntax. ¿Cómo hago un booleano && en Python?

Prueba esto:

 i = 5 ii = 10 if i == 5 and ii == 10: print "i is 5 and ii is 10" 

Edición : Ah, y no necesitas ese punto y coma en la última línea (edición para eliminarlo de mi código).

Como se señaló, “&” en python realiza una operación a nivel de bits, al igual que lo hace en C #. and es el equivalente apropiado para el operador && .

Ya que estamos tratando con booleanos ( i == 5 es True y ii == 10 también es True ), puede que se pregunte por qué esto tampoco funcionó (el hecho de que True sea tratado como una cantidad entera debería significar que True y True es un valor verdadero), o lanzar una excepción (por ejemplo, al prohibir las operaciones bitwise en tipos booleanos)

La razón es la precedencia del operador. El operador ” and ” se enlaza más libremente que == , por lo que la expresión: ” i==5 and ii==10 ” es equivalente a: ” (i==5) and (ii==10)

Sin embargo, bitwise & tiene una prioridad más alta que ” == ” (ya que no querría que expresiones como ” a & 0xff == ch ” signifiquen ” a & (0xff == ch) “), por lo que la expresión sería interpretado como:

 if i == (5 & ii) == 10: 

Lo que significa que el operador de python se encadena para significar: ¿el valor de ii y 5 es igual a i y 10. Obviamente, esto nunca será cierto?

En realidad, obtendría (aparentemente) la respuesta correcta si hubiera incluido corchetes para forzar la prioridad, por lo que:

 if (i==5) & (ii=10) 

causaría que la statement se imprima. Sin embargo, es incorrecto. ” & ” Tiene muchas semánticas diferentes a ” and ” – (precedencia, cortocircuito, comportamiento con argumentos de enteros, etc.), por lo que es una suerte que haya captado esto aquí en lugar de ser engañado hasta que se produzca. errores menos obvios.

El operador correcto que se utilizará son las palabras clave ‘o’ y ‘y’, que en su ejemplo, la forma correcta de express esto sería:

 if i == 5 and ii == 10: print "i is 5 and ii is 10" 

Puede consultar los detalles en la sección “Operaciones booleanas” en la referencia del idioma .

También puedes probarlos en pareja.

 if (i,ii)==(5,10): print "i is 5 and ii is 10" 

& se utiliza para la comparación de bits. utilizar and lugar. y por cierto, no necesita un punto y coma al final de la statement de impresión.

En Python, use and lugar de && así:

 #!/usr/bin/python foo = True; bar = True; if foo and bar: print "both are true"; 

Esto imprime:

 both are true