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.

  1. entrada.split() — convierte la línea de nombres en una lista: ["Ana", "Luis", "Eva"]. Luego pedimos aparte el nombre a buscar con otro input().
  2. if buscar in nombres: — el operador in recorre la lista y devuelve True si 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.
  3. nombres.index(buscar) — dentro del if ya 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.
  4. El patrón “primero in, luego .index()” es deliberado: .index() sobre un valor que no está lanza ValueError y corta el programa. Comprobar con in antes evita ese error, y por eso el else da 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
    pass

Solució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.

Conexiones