Ejercicio 07 — El usuario ingresa enteros con repetidos

Dificultad: amarillo · Módulo 05 (Listas y comprehensions)

Enunciado

El usuario ingresa enteros con repetidos; imprime la lista sin duplicados, ordenada

Cómo se resuelve

Quitar duplicados y ordenar una lista de enteros se resuelve en una sola expresión gracias a dos herramientas de Python: el tipo set (que no admite repetidos) y la función sorted().

  1. [int(x) for x in entrada.split()] — como en los ejercicios anteriores, partimos la línea y convertimos cada trozo a entero con una comprehension, obteniendo una lista que puede traer repetidos, por ejemplo [3, 1, 3, 2, 1].
  2. set(numeros) — un set es una colección sin orden que no permite elementos repetidos; al construirlo desde la lista, los duplicados desaparecen solos. Es la forma idiomática de “quitar repetidos” en Python, y lo hace en O(n) en vez de comparar todos contra todos.
  3. sorted(set(numeros)) — un set no tiene orden garantizado, así que sorted() lo recorre y devuelve una lista nueva ordenada de menor a mayor. Encadenamos ambas: primero eliminar duplicados, luego ordenar.
  4. Ojo a la diferencia entre sorted(x), que devuelve una lista nueva y deja el original intacto, y el método lista.sort(), que ordena la lista en su sitio y devuelve None. Aquí necesitamos la versión que devuelve, porque partimos de un set.

Trampa habitual: esperar que un set conserve el orden en que introdujiste los números. No lo hace; por eso hay que aplicar sorted() para tener una salida ordenada y predecible.

Para practicar — cópialo y complétalo

Pega este esqueleto y completa los TODO. Es la mejor forma de aprender: inténtalo antes de mirar la solución.

# Curso de Python — Modulo 05: Listas y comprehensions
# Ejercicio 07 — PRACTICA (rellena los TODO)
# Enunciado: El usuario ingresa enteros con repetidos; imprime la lista sin duplicados, ordenada
# Dificultad: amarillo
# Ejecutar: python3 ej07_practica.py
 
entrada = input("Introduce numeros enteros separados por espacio: ")
 
# TODO: convierte 'entrada' en una lista de enteros con split() y una comprehension
numeros = []
 
# TODO: elimina los duplicados convirtiendo la lista a set()
#       luego conviertela de nuevo a lista ordenada con sorted()
#       pista: sorted(set(numeros))
unicos = []
 
# TODO: imprime la lista resultante
print()

Solución — cópiala y ejecútala

# Curso de Python — Modulo 05: Listas y comprehensions
# Ejercicio 07 — MODELO (resuelto)
# Enunciado: El usuario ingresa enteros con repetidos; imprime la lista sin duplicados, ordenada
# Dificultad: amarillo
# Ejecutar: python3 ej07_modelo.py
 
entrada = input("Introduce numeros enteros separados por espacio: ")
 
# Convertimos a lista de enteros
numeros = [int(x) for x in entrada.split()]
 
# set() elimina duplicados (operacion O(n))
# sorted() devuelve una nueva lista ordenada ascendente
unicos = sorted(set(numeros))
 
print(unicos)

Cómo usarlo

Pega el código en un fichero y ejecútalo con tu toolchain habitual (o el botón de Ejecutar de tu editor). Antes de mirar la solución, intenta completar tú el esqueleto: es la mejor forma de aprender.

Conexiones