Booleanos, comparaciones y operadores en Python explicados
Esta lección es una traducción del original en inglés.Read in EnglishAvisar de un error de traducción
Cada día tomas decisiones de sí o no: "¿Está lloviendo?", "¿Tengo suficiente dinero?", "¿Mi contraseña es correcta?". Las computadoras toman el mismo tipo de decisiones, y para eso usan booleanos.
Un booleano es un valor que solo puede ser True o False. Nada más: dos opciones. Piensa en un interruptor de luz: encendido o apagado, sí o no, verdadero o falso.
En este tutorial aprenderás cómo compara valores Python, cómo combina condiciones y cómo decide qué cuenta como "verdadero" o "falso". Estas habilidades son la base de cada instrucción if y de cada bucle que vayas a escribir.
¿Qué son los booleanos en Python?
Python tiene un tipo de dato integrado llamado bool. Tiene exactamente dos valores posibles: True y False. Fíjate en la T y la F mayúsculas: importan.
True False <class 'bool'>
Las variables booleanas suelen empezar por is_, has_ o can_ para que el código se lea como inglés sencillo. Por ejemplo, is_logged_in (ha iniciado sesión) o has_permission (tiene permiso) te dicen exactamente qué significa la variable.
Cómo comparar valores en Python
La mayoría de los booleanos no salen de escribir True o False a mano. Salen de comparaciones. Cuando comparas dos valores, Python te devuelve un booleano.
Piensa en los operadores de comparación como en el juez de un concurso de talentos. Le das dos cosas y te responde "True" o "False".
True False True False True False True True
Puedes guardar el resultado de una comparación en una variable. Es útil cuando quieres comprobar una condición una sola vez y usar el resultado varias veces.
True True
Cómo comparar cadenas en Python
También puedes comparar cadenas. Python las revisa carácter por carácter siguiendo el orden alfabético (técnicamente, el orden Unicode). Las letras mayúsculas van antes que las minúsculas.
True False True True True
Cómo usar los operadores lógicos: and, or, not
A veces una comparación no basta. Puede que necesites comprobar si alguien tiene edad suficiente y además tiene entrada. O si es sábado o domingo. Python te ofrece tres operadores lógicos para combinar condiciones.
El operador "and"
El operador and devuelve True solo cuando los dos lados son verdaderos. Piensa en una puerta con dos cerraduras: necesitas las dos llaves para abrirla.
True False True
El operador "or"
El operador or devuelve True cuando al menos uno de los lados es verdadero. Piensa en una puerta con dos timbres: toques el que toques, alguien vendrá a abrir.
True False True
El operador "not"
El operador not cambia un booleano por su opuesto. True pasa a ser False, y False pasa a ser True. Es como accionar un interruptor de luz.
False True True
¿Qué es la evaluación de cortocircuito en Python?
Python es perezoso, pero de forma inteligente. Al evaluar and u or, se detiene en cuanto sabe la respuesta. Esto se llama evaluación de cortocircuito (short-circuit evaluation).
Con and, si el primer valor es False, Python ni se molesta en revisar el segundo: el resultado ya es False. Con or, si el primer valor es True, se salta el segundo: el resultado ya es True.
False True False
¿Qué son los valores truthy y falsy en Python?
Un dato sorprendente: en Python, todo valor tiene un "valor de verdad". No solo cuentan True y False: cualquier valor se puede tratar como verdadero o como falso.
Piénsalo así: ¿tu billetera está vacía o tiene algo dentro? Las cosas vacías son "falsy" (cuentan como falsas). Las cosas con contenido son "truthy" (cuentan como verdaderas).
False False False False False False True True True True
Cómo usar la función bool()
La función bool() convierte cualquier valor en su equivalente booleano. Te dice si Python considera que un valor es truthy o falsy.
True False True False False No input provided
En la práctica, rara vez necesitas llamar a bool() directamente. Python comprueba el valor de verdad automáticamente en las instrucciones if. Escribir if name: es lo mismo que if bool(name):, pero más corto.
name = "Alice"
if bool(name) == True:
print("Name is set")name = "Alice"
if name:
print("Name is set")Cómo usar comparaciones encadenadas en Python
Python tiene un truco ingenioso que la mayoría de los lenguajes no tienen: puedes encadenar comparaciones, igual que en matemáticas. En lugar de escribir x > 1 and x < 10, puedes escribir 1 < x < 10.
True True True
Las comparaciones encadenadas se leen igual que la notación matemática. Son más cortas y se entienden de un vistazo. Úsalas siempre que compruebes si un valor está dentro de un rango.
Errores comunes con booleanos en Python
Error 1: usar = en lugar de ==
Este es el error con booleanos más común entre quienes empiezan. Un solo = sirve para asignar (darle un valor a una variable). Un == doble sirve para comparar (comprobar si dos valores son iguales).
score = 100
# This assigns 50 to score, not a comparison!
# if score = 50: # SyntaxError!
# print("You got 50")score = 100
if score == 50:
print("You got 50")
else:
print("Not 50")Error 2: comparar tipos distintos
Comparar una cadena con un número puede dar resultados sorprendentes. La cadena "5" no es igual al número 5. Son de tipos distintos.
False True True True True
Ejercicios de práctica
Crea una variable num con el valor 42. Usa una comparación encadenada para comprobar si num está entre 1 y 100 (ambos incluidos). Imprime el resultado.
Salida esperada:
TrueCrea una variable word con el valor "Python". Comprueba si la cadena no está vacía Y tiene más de 3 caracteres. Imprime el resultado.
Salida esperada:
TrueSin ejecutar el código, predice qué imprimirá cada línea. Después, ejecútalo para comprobar tus respuestas.
El código imprime los resultados de tres operaciones lógicas.
El código de abajo debería comprobar si status es igual a "active" e imprimir el resultado. Pero tiene un error. Encuéntralo y corrígelo.
Salida esperada:
TrueCrea una variable year con el valor 2024. Un año es bisiesto si:
Usa el operador módulo % y operadores lógicos para comprobarlo. Imprime el resultado.
Salida esperada:
TrueUsa la función bool() para imprimir el valor de verdad de estos valores, cada uno en su propia línea y exactamente en este orden:
1. 0
2. "hello"
3. ""
4. 42
5. None
Salida esperada:
False
True
False
True
False