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().
[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].set(numeros)— unsetes 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.sorted(set(numeros))— unsetno tiene orden garantizado, así quesorted()lo recorre y devuelve una lista nueva ordenada de menor a mayor. Encadenamos ambas: primero eliminar duplicados, luego ordenar.- Ojo a la diferencia entre
sorted(x), que devuelve una lista nueva y deja el original intacto, y el métodolista.sort(), que ordena la lista en su sitio y devuelveNone. Aquí necesitamos la versión que devuelve, porque partimos de unset.
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.