Ejercicio 06 — Pide una lista de nombres y un nombre a buscar
Dificultad: amarillo · Módulo 05 (Listas y comprehensions)
Enunciado
Pide una lista de nombres y un nombre a buscar; informa si está y en qué posición
Cómo se resuelve
Buscar un nombre en una lista y decir en qué posición está enseña dos herramientas que Python te da hechas: el operador in para saber si existe y el método .index() para localizarlo.
entrada.split()— convierte la línea de nombres en una lista:["Ana", "Luis", "Eva"]. Luego pedimos aparte el nombre a buscar con otroinput().if buscar in nombres:— el operadorinrecorre la lista y devuelveTruesi el valor está. Es una comprobación de pertenencia limpia; por dentro es O(n) (mira elemento a elemento), pero te ahorra escribir el bucle a mano.nombres.index(buscar)— dentro delifya sabemos que está, así que.index()nos da la posición (empezando en 0) de la primera aparición. Lo llamamos solo cuando estamos seguros de que existe.- El patrón “primero
in, luego.index()” es deliberado:.index()sobre un valor que no está lanzaValueErrory corta el programa. Comprobar coninantes evita ese error, y por eso elelseda el mensaje de “no encontrado” sin llegar a llamar a.index().
Trampa habitual: llamar a .index() directamente sin comprobar antes. Si el nombre no está, no devuelve -1 como harías en C con una búsqueda casera, sino que lanza una excepción y el programa se para.
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 06 — PRACTICA (rellena los TODO)
# Enunciado: Pide una lista de nombres y un nombre a buscar; informa si está y en qué posición
# Dificultad: amarillo
# Ejecutar: python3 ej06_practica.py
entrada = input("Introduce nombres separados por espacio: ")
# TODO: convierte 'entrada' en una lista con split()
nombres = []
buscar = input("Nombre a buscar: ")
# TODO: usa 'in' para comprobar si 'buscar' esta en la lista
# si esta: usa .index() para obtener la posicion e imprime el mensaje
# si no esta: imprime que no se encontro
if True: # reemplaza con la condicion correcta
passSolución — cópiala y ejecútala
# Curso de Python — Modulo 05: Listas y comprehensions
# Ejercicio 06 — MODELO (resuelto)
# Enunciado: Pide una lista de nombres y un nombre a buscar; informa si está y en qué posición
# Dificultad: amarillo
# Ejecutar: python3 ej06_modelo.py
entrada = input("Introduce nombres separados por espacio: ")
nombres = entrada.split()
buscar = input("Nombre a buscar: ")
# 'in' comprueba existencia en O(n)
if buscar in nombres:
# .index() devuelve la posicion de la primera ocurrencia
pos = nombres.index(buscar)
print(f'"{buscar}" encontrado en posicion {pos}')
else:
print(f'"{buscar}" no encontrado en la lista')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.