HDP115

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.

CE

Cristian Escalante

Última actualización: 18 de mayo de 2025

python
programación
lógica

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 objetos
  • is 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

  1. Usar is para comparar con None, True, y False:
# Forma recomendada
if resultado is None:
    print("No hay resultado")

# No recomendado
if resultado == None:
    print("No hay resultado")
  1. Evitar comparaciones explícitas con True y False:
# Forma recomendada
es_valido = edad >= 18
if es_valido:
    print("Es válido")

# No recomendado
if es_valido == True:
    print("Es válido")
  1. 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]")
  1. 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

  1. Escribe una función que determine si un año es bisiesto.
  2. Crea un programa que clasifique un triángulo como equilátero, isósceles o escaleno según las longitudes de sus lados.
  3. 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).
  4. Escribe un programa que determine si un número es primo.
  5. 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.

Operadores Aritméticos
Aprende a realizar cálculos matemáticos en Python utilizando...
Operadores Lógicos
Aprende a combinar condiciones en Python utilizando operador...
Referencias

Conceptos Básicos de HTML

Aprende los conceptos básicos de HTML

Conceptos Básicos de CSS

Aprende los conceptos básicos de CSS

Conceptos Básicos de JavaScript

Aprende los conceptos básicos de JavaScript

Conceptos Básicos SQL

Aprende los conceptos básicos de SQL

Conceptos Básicos de GIT

Aprende los conceptos básicos de GIT

Conceptos Básicos de UML

Aprende los conceptos básicos de UML

Refuerzo Academico de Herramientas de Productividad 2025