Operadores de Comparación
Aprende a comparar valores en Python utilizando operadores de comparación para crear expresiones booleanas y tomar decisiones en tus programas.
Cristian Escalante
Última actualización: 18 de mayo de 2025
Operadores de Comparación en Python
Los operadores de comparación en Python se utilizan para comparar valores y devolver un resultado booleano (True
o False
). Estos operadores son fundamentales para la toma de decisiones en programación, ya que permiten que nuestros programas ejecuten diferentes acciones según las condiciones que especifiquemos.
Tipos de Operadores de Comparación
Python proporciona seis operadores de comparación básicos:
Igualdad (==)
El operador ==
compara si dos valores son iguales:
# Comparación de números
x = 5
y = 5
print(x == y) # Resultado: True
# Comparación de diferentes tipos
print(5 == 5.0) # Resultado: True (Python convierte los tipos)
# Comparación de cadenas
nombre1 = "Python"
nombre2 = "python"
print(nombre1 == nombre2) # Resultado: False (distingue mayúsculas y minúsculas)
# Comparación de listas
lista1 = [1, 2, 3]
lista2 = [1, 2, 3]
print(lista1 == lista2) # Resultado: True (compara contenido)
Desigualdad (!=)
El operador !=
compara si dos valores son diferentes:
# Comparación de números
x = 5
y = 10
print(x != y) # Resultado: True
# Comparación de cadenas
nombre1 = "Python"
nombre2 = "Python"
print(nombre1 != nombre2) # Resultado: False (son iguales)
# Comparación de diferentes tipos
print(5 != "5") # Resultado: True (diferentes tipos)
Mayor que (>)
El operador >
compara si el valor de la izquierda es mayor que el de la derecha:
# Comparación de números
x = 10
y = 5
print(x > y) # Resultado: True
# Comparación de cadenas (compara lexicográficamente)
print("b" > "a") # Resultado: True
print("abc" > "abd") # Resultado: False
# Comparación de listas (compara elemento por elemento)
print([1, 2, 3] > [1, 2, 2]) # Resultado: True
Menor que (<)
El operador <
compara si el valor de la izquierda es menor que el de la derecha:
# Comparación de números
x = 5
y = 10
print(x < y) # Resultado: True
# Comparación de cadenas
print("a" < "b") # Resultado: True
print("abc" < "ab") # Resultado: False (abc es mayor que ab)
# Comparación de tuplas
print((1, 2) < (1, 3)) # Resultado: True
Mayor o igual que (>=)
El operador >=
compara si el valor de la izquierda es mayor o igual que el de la derecha:
# Comparación de números
x = 10
y = 10
print(x >= y) # Resultado: True
z = 5
print(x >= z) # Resultado: True
# Comparación de cadenas
print("abc" >= "abc") # Resultado: True
print("abd" >= "abc") # Resultado: True
Menor o igual que (<=)
El operador <=
compara si el valor de la izquierda es menor o igual que el de la derecha:
# Comparación de números
x = 5
y = 10
print(x <= y) # Resultado: True
z = 5
print(x <= z) # Resultado: True
# Comparación de cadenas
print("abc" <= "abc") # Resultado: True
print("abc" <= "abd") # Resultado: True
Operadores de Identidad
Además de los operadores de comparación, Python proporciona operadores de identidad que comparan si dos variables hacen referencia al mismo objeto en memoria:
is
El operador is
comprueba si dos variables hacen referencia al mismo objeto:
# Comparación de identidad con objetos inmutables
a = "Python"
b = "Python"
print(a is b) # Resultado: True (ambos apuntan al mismo objeto por optimización)
# Comparación de identidad con listas (objetos mutables)
lista1 = [1, 2, 3]
lista2 = [1, 2, 3]
print(lista1 is lista2) # Resultado: False (son objetos diferentes)
# Comparación con el mismo objeto
lista3 = lista1
print(lista1 is lista3) # Resultado: True (ambos apuntan al mismo objeto)
is not
El operador is not
comprueba si dos variables no hacen referencia al mismo objeto:
# Comparación de identidad negativa
a = [1, 2, 3]
b = [1, 2, 3]
print(a is not b) # Resultado: True (son objetos diferentes)
c = a
print(a is not c) # Resultado: False (son el mismo objeto)
Diferencia entre == e is
Es importante entender la diferencia entre los operadores ==
e is
:
==
compara el valor o contenido de los objetosis
compara la identidad de los objetos (si son exactamente el mismo objeto en memoria)
# Ejemplo para ilustrar la diferencia
a = [1, 2, 3]
b = [1, 2, 3]
print(a == b) # Resultado: True (mismo contenido)
print(a is b) # Resultado: False (diferentes objetos)
# Con None es recomendable usar 'is'
x = None
print(x is None) # Resultado: True (forma recomendada)
print(x == None) # Resultado: True (funciona, pero no es la forma recomendada)
Comparaciones Encadenadas
Python permite encadenar múltiples comparaciones en una sola expresión:
# Comparaciones encadenadas
x = 5
print(1 < x < 10) # Resultado: True (equivalente a 1 < x and x < 10)
edad = 25
print(18 <= edad <= 65) # Resultado: True (en edad laboral)
# Combinaciones más complejas
a, b, c = 3, 5, 7
print(a < b == 5 < c) # Resultado: True (a < b and b == 5 and 5 < c)
Comparación de Tipos Diferentes
Python permite comparar valores de diferentes tipos en algunos casos:
# Comparación de enteros y flotantes
print(5 == 5.0) # Resultado: True
# Comparación de diferentes tipos numéricos
print(10 > 9.9) # Resultado: True
# Comparación de tipos incomparables puede causar errores
try:
print([1, 2] > 5) # Esto genera un error
except TypeError as e:
print(f"Error: {e}")
Comparación de Colecciones
Python compara colecciones (listas, tuplas, etc.) elemento por elemento:
# Comparación de listas
print([1, 2, 3] == [1, 2, 3]) # Resultado: True
print([1, 2, 3] < [1, 2, 4]) # Resultado: True
print([1, 2, 3] < [1, 3, 1]) # Resultado: True (compara 2 < 3 en el segundo elemento)
# Comparación de tuplas
print((1, 2) < (1, 2, 0)) # Resultado: True (la tupla más corta es menor)
print((1, 2, 3) == (1, 2, 3)) # Resultado: True
# Comparación de diccionarios
# Los diccionarios son iguales si tienen los mismos pares clave-valor
dict1 = {"a": 1, "b": 2}
dict2 = {"b": 2, "a": 1}
print(dict1 == dict2) # Resultado: True (mismo contenido, el orden no importa)
# Los diccionarios no se pueden comparar con < o > en Python 3
try:
print({"a": 1} < {"b": 2}) # Esto genera un error en Python 3
except TypeError as e:
print(f"Error: {e}")
Uso de Operadores de Comparación en Estructuras de Control
Los operadores de comparación son fundamentales para las estructuras de control como if
, while
y for
:
En declaraciones if
# Uso de comparaciones en if
edad = 18
if edad < 18:
print("Eres menor de edad")
elif edad == 18:
print("Acabas de alcanzar la mayoría de edad")
else:
print("Eres mayor de edad")
En bucles while
# Uso de comparaciones en while
contador = 0
while contador < 5:
print(f"Contador: {contador}")
contador += 1
En expresiones de comprensión de listas
# Uso de comparaciones en comprensión de listas
numeros = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
pares = [num for num in numeros if num % 2 == 0]
print(pares) # Resultado: [2, 4, 6, 8, 10]
Ejemplos Prácticos
Sistema de calificaciones
def obtener_calificacion(puntuacion):
if puntuacion >= 90:
return "A"
elif puntuacion >= 80:
return "B"
elif puntuacion >= 70:
return "C"
elif puntuacion >= 60:
return "D"
else:
return "F"
# Ejemplos de uso
print(obtener_calificacion(95)) # Resultado: A
print(obtener_calificacion(82)) # Resultado: B
print(obtener_calificacion(45)) # Resultado: F
Verificación de rango
def esta_en_rango(valor, minimo, maximo):
return minimo <= valor <= maximo
# Ejemplos de uso
print(esta_en_rango(5, 1, 10)) # Resultado: True
print(esta_en_rango(15, 1, 10)) # Resultado: False
print(esta_en_rango(-5, -10, 0)) # Resultado: True
Comparación de fechas
from datetime import date
def es_mayor_de_edad(fecha_nacimiento):
hoy = date.today()
edad = hoy.year - fecha_nacimiento.year - ((hoy.month, hoy.day) < (fecha_nacimiento.month, fecha_nacimiento.day))
return edad >= 18
# Ejemplos de uso
print(es_mayor_de_edad(date(2000, 1, 1))) # Resultado: True
print(es_mayor_de_edad(date(2010, 1, 1))) # Resultado: False
Mejores Prácticas
- Usar
is
para comparar conNone
,True
, yFalse
:
# Forma recomendada
if resultado is None:
print("No hay resultado")
# No recomendado
if resultado == None:
print("No hay resultado")
- Evitar comparaciones explícitas con
True
yFalse
:
# Forma recomendada
es_valido = edad >= 18
if es_valido:
print("Es válido")
# No recomendado
if es_valido == True:
print("Es válido")
- Aprovechar las comparaciones encadenadas:
# Forma recomendada
if 0 <= x <= 100:
print("x está en el rango [0, 100]")
# No recomendado
if x >= 0 and x <= 100:
print("x está en el rango [0, 100]")
- Tener cuidado con la comparación de flotantes:
# Problemas con la precisión de flotantes
x = 0.1 + 0.2
y = 0.3
# No recomendado (puede fallar debido a la imprecisión)
if x == y:
print("Son iguales")
# Forma recomendada
from math import isclose
if isclose(x, y, rel_tol=1e-9):
print("Son aproximadamente iguales")
Ejercicios Prácticos
- Escribe una función que determine si un año es bisiesto.
- Crea un programa que clasifique un triángulo como equilátero, isósceles o escaleno según las longitudes de sus lados.
- Implementa una función que verifique si una cadena es un palíndromo (se lee igual de izquierda a derecha que de derecha a izquierda).
- Escribe un programa que determine si un número es primo.
- Crea una función que verifique si una contraseña cumple con ciertos requisitos (longitud mínima, contiene números, letras mayúsculas y minúsculas).
En la próxima lección, exploraremos los operadores lógicos en Python y cómo combinarlos con los operadores de comparación para crear condiciones más complejas.