Contenido del capítulo

En este capítulo aprenderás lo que son los operadores de comparación, los operadores lógicos y las expresiones de lógica booleana. Estos conocimientos te prepararán para afrontar el tema de las estructuras de control de flujo.

Duración estimada de todo el contenido:
Duración del vídeo:
Contiene 6 ejercicios. Contiene 7 vídeos.
Tabla de contenidos
Logo

    ¿Qué es la lógica booleana?

    La lógica booleana en programación es un sistema matemático que permite trabajar con valores de verdadero y falso.

    Basándose en esos dos valores, podemos hacer comparaciones lógicas para que el programa llegue a conclusiones y actúe de diferentes formas según los resultados.

    Espacio publicitario

    Los operadores de comparación

    Los operadores de comparación y lógicos
    Los operadores de comparación y lógicos

    Los operadores de comparación se utilizan para comparar dos valores y determinar si son iguales, diferentes, mayores o menores que otros. Estos operadores son necesarios para la lógica de programación.

    Operadores de comparación se traduce al inglés como comparison operators.

    Con el uso de estos operadores comparativos hablamos siempre de valores en la izquierda y en la derecha de la comparación.

    Aquí tienes un ejemplo:

    valor_izquierda == valor_derecha

    El valor de la izquierda de la comparación es el que se compara con el valor de la derecha. Entonces, en el siguiente ejemplo, se compara si el valor 10 (izquierda) es igual (==) que el valor 20 (derecha):

    10 == 20

    El intérprete de Python resuelve estas expresiones dejando un valor booleano True o False, dependiendo de lo que evalúe en la expresión. En el ejemplo anterior la expresión deja un valor False, puesto que no es verdad que 10 sea igual que 20. El intérprete nos dice que la comparación hecha es falsa.

    Muy pronto empezarás a utilizar los operadores de comparación con las estructuras de control de flujo (condicionales y bucles). Con estas conseguirás que el programa pueda tomar decisiones, haciéndolo más “inteligente”. Sin embargo, primero debes entender cómo funciona la lógica booleana. Esto hará que aprendas a manejar más fácilmente estas estructuras.

    En los siguientes ejemplos, con el fin de que te habitúes a esta lógica booleana, haremos las comparaciones en variables, para que se guarde uno de estos valores booleanos en ellas, y los puedas ver con tus propios ojos. Si la comparación es cierta, nos dejará en la variable un valor True, y si es falsa un valor False.

    Aquí tienes los operadores de comparación que vamos a utilizar:

    Operador Descripción
    == Igual que
    != Diferente que
    < Menor que
    > Mayor que
    <= Menor o igual que
    >= Mayor o igual que

    Espacio publicitario

    Operador de comparación igual que

    Los operadores igual que y diferente que
    Los operadores igual que y diferente que

    El operador de comparación igual que (==) compara si el valor de la izquierda, es igual que el de la derecha. Si esto es así, se devolverá un valor True. En caso contrario un valor False.

    El término igual que, en inglés se dice equal to.

    No confundas el operador igual que, con el operador de asignación.

    Igual que (==) compara igualdad entre dos valores. Asignación (=) sirve para asignar un valor a una variable.

    Tabla comparativa del operador igual que

    Esta tabla con valores de ejemplo muestra los posibles resultados de este operador:

    Valor en la izquierda Valor en la derecha Resultado
    10 15 False
    15 10 False
    10 10 True

    En el siguiente ejemplo tenemos dos números en dos variables, y una comparación booleana en la tercera:

    a = 10
    b = 15
    comparacion = a == b
    
    print(comparacion)
    Resultado en la consola
    False

    En este caso, el valor de la variable a no es igual que el de la variable b, con lo que el resultado de la comparación nos deja en la variable comparacion un valor False.

    En cambio, si son iguales el intérprete de Python nos dice que es verdadero:

    a = 10
    b = 10
    comparacion = a == b
    
    print(comparacion)
    Resultado en la consola
    True

    Espacio publicitario

    Operador de comparación diferente que

    El operador de comparación diferente que (!=), también conocido como no igual, nos devuelve un resultado True si los valores son diferentes, y False si son iguales. Es decir, es todo lo contrario al operador igual que.

    El término no igual en inglés se traduce como not equal.

    Si hablamos de diferente que, se traduce como different from.

    Tabla comparativa del operador diferente que

    Aquí tienes una tabla de ejemplo para el operador diferente que:

    Valor en la izquierda Valor en la derecha Resultado
    10 15 True
    15 10 True
    10 10 False

    En la siguiente comparación nos da un valor True, puesto que el valor de la variable a es diferente que el de la variable b:

    a = 10
    b = 15
    comparacion = a != b
    
    print(comparacion)
    Resultado en la consola
    True

    En cambio, en esta otra comparación nos devuelve un valor False, puesto que los dos valores son iguales:

    a = 10
    b = 10
    comparacion = a != b
    
    print(comparacion)
    Resultado en la consola
    False

    Espacio publicitario

    Operador de comparación mayor que

    Los operadores mayor que y menor que
    Los operadores mayor que y menor que

    El operador de comparación mayor que (>), devuelve True si el valor de la izquierda es mayor que el de la derecha. En caso contrario devuelve False.

    Tabla comparativa del operador mayor que

    Valor en la izquierda Valor en la derecha Resultado
    10 15 False
    15 10 True
    10 10 False

    El término mayor que en inglés se traduce como greater than.

    El siguiente ejemplo nos devuelve un resultado False, puesto que el valor de la variable a no es mayor que el de la variable b:

    a = 10
    b = 15
    comparacion = a > b
    
    print(comparacion)
    Resultado en la consola
    False

    Operador de comparación menor que

    El operador de comparación menor que (<) es todo lo contrario al operador mayor que. Si el valor de la izquierda es menor que el de la derecha, devuelve True. En caso contrario, False.

    Tabla comparativa del operador menor que

    Valor en la izquierda Valor en la derecha Resultado
    10 15 True
    15 10 False
    10 10 False

    El término menor que en inglés se traduce como less than.

    El siguiente ejemplo nos devuelve un resultado True, puesto que el valor de la variable a es menor que el de la variable b:

    a = 10
    b = 15
    comparacion = a < b
    
    print(comparacion)
    Resultado en la consola
    True

    Espacio publicitario

    Operador de comparación mayor o igual que

    Los operadores mayor y menor o igual que
    Los operadores mayor y menor o igual que

    El operador mayor o igual que (>=) es una mezcla del operador mayor que y el operador igual que. Este nos devuelve True siempre que el valor de la izquierda sea mayor o igual que el de la derecha.

    Tabla comparativa del operador mayor o igual que

    Valor en la izquierda Valor en la derecha Resultado
    10 15 False
    15 10 True
    10 10 True

    El término mayor o igual que en inglés se traduce como greater than or equal to.

    Mira el siguiente ejemplo:

    a = 10
    b = 10
    comparacion = a >= b
    
    print(comparacion)
    Resultado en la consola
    True

    Puesto que el valor de la variable a, es igual que el de la variable b, nos devuelve un True.

    Operador de comparación menor o igual que

    El operador menor o igual que (<=), espera que el valor de la izquierda sea menor o igual que el de la derecha. Si se cumple eso, recibiremos un True.

    Tabla comparativa del operador menor o igual que

    Valor en la izquierda Valor en la derecha Resultado
    10 15 True
    15 10 False
    10 10 True

    Menor o igual que se traduce en inglés como less than or equal to.

    Aquí tienes un ejemplo de uso:

    a = 10
    b = 15
    comparacion = a <= b
    
    print(comparacion)
    Resultado en la consola
    True

    Puesto que el valor de la variable a, es menor que el de la variable b, nos devuelve un resultado True.

    Espacio publicitario

    Los operadores lógicos

    Los operadores lógicos son muy diferentes a los de comparación. Pero pese a ser diferentes, ambos tipos pueden ser utilizados en conjunto para crear expresiones más complejas, puesto que también devuelven resultados booleanos.

    Operadores lógicos, en inglés se dice logical operators.

    Con un operador lógico puedes encadenar y relacionar dos expresiones comparativas, obteniendo un resultado booleano de ambas.

    Estos son los tres operadores lógicos que vamos a utilizar:

    Operador Descripción
    and y lógico
    or o lógico
    not no lógico

    El operador lógico and

    El operador lógico and
    El operador lógico and

    El operador lógico and se utiliza para combinar dos expresiones booleanas y evaluar si son verdaderas o falsas en conjunto.

    Si ambas expresiones son verdaderas, la expresión compuesta es verdadera. En el caso de que una o las dos expresiones sean falsas, la expresión compuesta es falsa.

    La palabra and se traduce en español como “y”.

    Tabla comparativa del operador lógico and

    La siguiente tabla contiene las posibilidades utilizando el operador and:

    Expresión 1 (izquierda) Expresión 2 (derecha) Resultado
    True True True
    True False False
    False True False
    False False False

    La sintaxis de este operador es la siguiente:

    expresión1 and expresión2

    Para que entiendas mejor esta representación de sintaxis, te pongo un ejemplo con dos expresiones cualquiera:

    a > b and c == d

    En este ejemplo se compara en la primera expresión (la de la izquierda) si el valor de la variable a, es mayor que el de la variable b. Además, tenemos la segunda expresión (la de la derecha), que compara si el valor de la variable c es igual al de la variable d. El resultado dependerá de los valores que tengan las diferentes variables evaluadas.

    Espacio publicitario

    Cada una de las dos expresiones devolverá un valor booleano por separado, y basándose en esos dos valores se hace una evaluación final de ambas. Dando un resultado como los que hay en la tabla anterior.

    Entonces, supongamos que la primera expresión es verdadera (a es mayor que b) y que la segunda es falsa (c no es igual que d). La comparación hasta este punto quedaría así:

    True and False

    El operador and, lo que va a hacer es devolver finalmente un True o un False, en torno a esos dos valores booleanos recibidos en la resolución de las dos expresiones. Si tenemos un True and False, el resultado final con el operador and es False.

    Para que el operador and evalúe como True, ambas expresiones simples deben ser True. En cualquier otro caso, siempre evalúa como False. Siempre que tengas dudas comprueba la tabla comparativa del and.

    Ejemplo práctico con el operador and

    A continuación tienes un ejemplo más ilustrativo del uso del operador lógico and.

    Contamos con dos comparaciones diferentes. Cada una evalúa dos expresiones con el operador and. Finalmente, se imprime el resultado final.

    a = 15
    b = 17
    c = 13
    
    # Comparaciones
    comparacion_1 = a < b and b > c
    comparacion_2 = a > b and b > c
    
    # Comprobamos los resultados
    print(comparacion_1)
    print(comparacion_2)
    Resultado en la consola
    True
    False

    Para entender los cálculos que hace el intérprete de Python, debemos resolver las comparaciones paso a paso.

    Resolviendo comparacion_1
    comparacion_1 = a < b and b > c

    En la primera comparación recibimos un valor final de True.

    Resolvamos la expresión compleja. Primero, separamos cada expresión simple:

    a = 15
    b = 17
    c = 13
    1. a < b = True (15 es menor que 17).
    2. b > c = True (17 es mayor que 13).

    Puesto que ambas expresiones devuelven True, el resultado final es True.

    Resolviendo comparacion_2
    comparacion_2 = a > b and b > c

    En la segunda comparación recibimos un valor final de False.

    Resolvamos la expresión compleja. Primero, separamos cada expresión simple:

    a = 15
    b = 17
    c = 13
    1. a > b = False (15 no es mayor que 17).
    2. b > c = True (17 es mayor que 13).

    En esta ocasión, en la primera expresión recibimos un False y en la segunda un True. Lo que nos da finalmente un resultado False.

    Espacio publicitario

    El operador lógico or

    El operador lógico or
    El operador lógico or

    El operador lógico or compara también dos expresiones, pero este es menos restrictivo que el and. En este caso, siempre se devuelve un valor conjunto de True, excepto cuando ambas expresiones son False.

    La palabra or se traduce en español como “o”.

    Tabla comparativa del operador lógico or

    La siguiente tabla contiene las posibilidades utilizando el operador or:

    Expresión 1 (izquierda) Expresión 2 (derecha) Resultado
    True True True
    True False True
    False True True
    False False False

    La sintaxis de este operador es la siguiente:

    expresión1 or expresión2

    Ejemplo práctico con el operador or

    A continuación, tienes un ejemplo más ilustrativo del uso del operador lógico or.

    a = 15
    b = 17
    c = 13
    
    # Comparaciones
    comparacion_1 = a < b or b > c
    comparacion_2 = a == b or b < c
    
    # Comprobamos los resultados
    print(comparacion_1)
    print(comparacion_2)
    Resultado en la consola
    True
    False
    Resolviendo comparacion_1
    comparacion_1 = a < b or b > c

    En la primera comparación recibimos un valor final de True.

    Resolvamos la expresión compleja. Primero, separamos cada expresión simple:

    a = 15
    b = 17
    c = 13
    1. a < b = True (15 es menor que 17).
    2. b > c = True (17 es mayor que 13).

    Ambas expresiones dan True, por lo que en conjunto, con el operador or recibimos un valor True.

    Resolviendo comparacion_2
    comparacion_2 = a == b or b < c

    En la segunda comparación, recibimos un valor final de False.

    Resolvamos la expresión compleja. Primero, separamos cada expresión simple:

    a = 15
    b = 17
    c = 13
    1. a == b = False (15 no es igual a 17).
    2. b < c = False (17 no es menor que 13).

    En esta ocasión, ambas expresiones dan False, por lo que el resultado final es False.

    Espacio publicitario

    El operador lógico not

    El operador lógico not
    El operador lógico not

    El operador lógico not se utiliza para negar el valor de una expresión booleana. Gracias a este, podremos expresar todo lo contrario a la propia expresión dada.

    La palabra not se traduce en español como “no”

    Explicado de forma más sencilla, el operador not invierte el valor de verdadero o falso de una expresión booleana. Si la expresión booleana es verdadera, el operador not la convierte en falsa, y si la expresión booleana es falsa, la convierte en verdadera. Al principio, esto puede ser algo confuso, pero ya verás que muy pronto le irás viendo la lógica.

    Aquí tienes la sintaxis del operador not:

    not expresión

    Ejemplo práctico con el operador not

    A continuación, tienes un ejemplo más ilustrativo del uso del operador lógico not.

    En el siguiente ejemplo, sin utilizar todavía el operador not, estoy evaluando si el valor de la variable a, es igual al de la variable b. Puesto que no lo es, el resultado es False. Hasta aquí todo como era de esperar.

    a = 5
    b = 3
    
    # Comparación
    comparacion = a == b
    
    # Comprobamos los resultados
    print(comparacion)
    Resultado en la consola
    False

    Pues bien, en el siguiente ejemplo, puedes ver cómo se invierte esta lógica booleana con el operador not:

    a = 5
    b = 3
    
    # Comparación
    comparacion = not a == b
    
    # Comprobamos los resultados
    print(comparacion)
    Resultado en la consola
    True

    Como era de esperar, según mis indicaciones, el resultado es todo lo contrario.

    Espacio publicitario

    Expresiones más complejas

    Debes saber que puedes ir encadenando expresiones más complejas.

    Por ejemplo:

    print(not (10 > 7 and (10 == 11 or 11 != 10)))
    Resultado en la consola
    False

    Fíjate, en que también se pueden englobar operaciones lógicas con los paréntesis, y cambiar las prioridades.

    Normalmente, intentaremos no representar una lógica booleana tan compleja. Simple es mejor que complejo, ya lo dice el propio Zen de Python. Sin embargo, este tipo de ejemplos de lógica booleana te puede venir bien para ir practicando.

    El Zen de Python son una serie de frases que describen muy bien las peculiaridades y la filosofía del lenguaje de programación Python.

    Vamos a resolver esta expresión tan compleja, parte por parte.

    Primero, debemos resolver los paréntesis más internos, y luego los de los siguientes niveles. Es decir, de la expresión más interna a la más externa. Igual que el ejemplo del orden de resolución de las funciones que he mostrado en el capítulo anterior.

    Empecemos por los pasos de resolución de la primera parte:

    (10 == 11 or 11 != 10)

    10 == 11 evalúa como False.

    11 != 10 evalúa como True.

    False or True, da un resultado True.

    La expresión en este punto queda así:

    not (10 > 7 and (True))

    Eliminamos los paréntesis internos:

    not (10 > 7 and True)

    10 > 7 evalúa como True.

    Nos queda la siguiente expresión:

    not (True and True)

    (True and True) se resuelve como True, por lo que nos queda la expresión not True, que al invertir el valor booleano, finalmente queda como False.

    Espacio publicitario




    Espacio publicitario


    Ejercicios de Python para resolver

    Los siguientes ejercicios los puedes contestar mentalmente, sin ejecutar nada de código. No obstante, si prefieres, puedes añadir estas expresiones a tu hoja de código Python.

    53. Mira las siguientes comparaciones, y contesta si evalúan como True o como False.

    1. 10 == 10
    2. 26 != 26
    3. 26 == 15
    4. 45 != 54
    5. 10 > 10
    6. 260 < 48
    7. 26 > 15
    8. 45 < 54
    9. 10 >= 10
    10. 10 <= 10
    11. 260 <= 48
    12. 26 >= 15
    13. 45 <= 54
    1. True
    2. False
    3. False
    4. True
    5. False
    6. False
    7. True
    8. True
    9. True
    10. True
    11. False
    12. True
    13. True

    54. Si tenemos una evaluación como la siguiente, ¿qué resultado booleano da?

    True and True

    El resultado de evaluar True and True, es True.

    55. ¿Y si tenemos estos valores en la expresión?

    True and False

    El resultado de evaluar True and False, es False

    56. A continuación, deberás resolver las siguientes expresiones. Utiliza estas cuatro variables para ir resolviendo cada una. ¿Serás capaz de resolverlas mentalmente?

    a = 10
    b = 15
    c = 20
    d = a

    Contesta si las expresiones dan un resultado True o False.

    1. a < b and c > b
    2. d == a and d != b
    3. b <= c and c < a
    4. a == a and d == a
    5. a < b or c > b
    6. d == a or d != a
    7. b <= c or c > a
    8. a == b or d != a
    9. not (a < b or c > b)
    10. not (d == a and d != b)
    11. b <= c or (not c > a)
    12. not (a == a and not d == a)
    1. True
    2. True
    3. False
    4. True
    5. True
    6. True
    7. True
    8. False
    9. False
    10. False
    11. True
    12. True

    57. Resuelve las siguientes expresiones:

    1. True or True
    2. True or False
    3. not (True or True)
    4. not (False and True)
    1. True
    2. True
    3. False
    4. True

    58. ¿Qué resultado booleano da la siguiente expresión compleja? ¿Sabrías explicar por qué?

    Utiliza los valores de variable (a, b, c y d) de uno de los ejercicios anteriores (ejercicio 56).

    not (a + b > 5 and c - 10 <= d or 10 == a)

    La respuesta es True. Veamos porqué.

    Tenemos la siguiente expresión inicial:

    not (a + b > 5 and c - 10 <= d or 10 == a)

    A partir de ella, vamos resolviendo cada parte:

    a + b > 5 and c - 10 <= d

    Esta parte se resuelve así:

    a + b > 5 (10 + 15 = 25 > 5) = True
    c - 10 <= d (20 - 10 <= 10) = True
    True and True = True

    Nos queda la otra parte de los paréntesis:

    10 == a (10 == 10) = True

    Finalmente:

    True or True = True

    Esto deja los paréntesis resueltos como True.

    not True = False

    Es bastante complejo, pero por suerte, tenemos al intérprete de Python, que entre otras muchas cosas, resuelve estas operaciones de lógica por nosotros.

    Sin embargo, como mínimo debes entenderlas.

    Si en un futuro quieres crear algoritmos matemáticos muy complejos, debes empezar con operaciones “básicas” como esta.



    Espacio publicitario