Hola Eva, espero que estés bien
Veo que estás trabajando en una tarea para encontrar un libro específico en una lista y detener la búsqueda una vez que lo encuentres. Has propuesto dos soluciones, y ambas son interesantes.
La primera solución usa un bucle for junto con una declaración if y break, lo cual es una manera muy efectiva de detener la búsqueda una vez que el libro es encontrado. Aquí está el código que compartiste:
libroBuscado='El Hobbit'
listaLibros=["1984", "Cien años de soledad", "El Principito", "El Hobbit", "Orgullo y Prejuicio"]
# Solución bajo requerimiento
for libro in listaLibros:
if libro == libroBuscado:
print(f'Libro encontrado: "{libro}" en la posición {listaLibros.index(libro)+1} de la lista.')
break
print('\n')
Esta solución es bastante clara y cumple con el requerimiento de detener la búsqueda después de encontrar "El Hobbit".
La segunda solución que propusiste utiliza filter y lambda, lo cual es una manera más funcional de abordar el problema. Sin embargo, parece que hay un pequeño error en la forma en que se está utilizando format. Aquí tienes una forma corregida de hacerlo:
libroBuscado='El Hobbit'
listaLibros=["1984", "Cien años de soledad", "El Principito", "El Hobbit", "Orgullo y Prejuicio"]
# Alternativa Propuesta
resultado = list(filter(lambda x: x == libroBuscado, listaLibros))
if resultado:
print('Libro Encontrado "{}" en la posición {} de la lista.'.format(resultado[0], listaLibros.index(resultado[0])+1))
Esta versión corrige el uso de format y asegura que el mensaje se imprima correctamente. Sin embargo, ten en cuenta que filter no detiene la búsqueda al encontrar el libro, sino que revisa toda la lista. Por lo tanto, la primera solución es más eficiente para el propósito específico de detener la búsqueda inmediatamente.
Espero haber aclarado tus dudas y que estas soluciones te sean útiles. ¡Bons estudios!