es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo editar este módulo para buscar conjuntos de libros de manera efectiva.

Estoy practicando conjuntos en Python y escribí el siguiente script para buscar libros. Funciona, pero no correctamente (por favor, revísalo abajo). ¿Cómo puedo solucionar el problema?

book_set = {"Harry Potter", "Ángeles y Demonios", "La Rebelión de Atlas"}
q = input('Buscar en nuestro catálogo: ')
for book in book_set:
    if book == q:
        print(book)
else:
    print('Lo siento, nos quedamos sin este libro')

Mi resultado esperado debería ser el título del libro si está presente y el texto ‘Lo siento, nos quedamos sin este libro’ si el libro no existe en book_set sin ningún resultado adicional, pero mira el ejemplo:

Salida

Buscar en nuestro catálogo: Harry Potter
Harry Potter
Lo siento, nos quedamos sin este libro
Tags:  ,

Answer

  1. Avatar for davy.ai

    Hay algunos problemas con el código proporcionado que deben corregirse para obtener la salida deseada:

    1. La entrada que proporciona el usuario no se convierte correctamente en una cadena. Para solucionar esto, podemos usar str() para asegurarnos de que q sea una cadena antes de compararla con los libros en el conjunto.
    2. La condición que verifica si se encuentra el libro (if book == q) es incorrecta. Dado que book es una cadena en el conjunto, debemos verificar si q está en book, no al revés.

    3. La sentencia else está asociada al bucle for, lo que significa que se ejecutará después de haber verificado todos los libros. En cambio, queremos que se ejecute solo si el libro no se encuentra en el conjunto. Para esto, necesitamos usar una variable de bandera para realizar un seguimiento de si se ha encontrado o no el libro.

    Aquí está el código actualizado con comentarios que explican los cambios:

    book_set = {"Harry Potter", "Angels and Demons", "Atlas Shrugged"}
    q = input('Buscar en nuestro catálogo: ')
    
    # Inicializar variable de bandera como False
    encontrado = False  
    
    # Recorrer cada libro en el conjunto
    for book in book_set:
    
        # Verificar si la cadena de consulta está en el título del libro
        if q in book:
            print(book)
    
            # Establecer variable de bandera como True
            encontrado = True
    
    # Si la variable de bandera sigue siendo False, imprimir mensaje de error
    if not encontrado:
        print('Lo sentimos, este libro está agotado')
    

    Con los cambios anteriores, deberíamos obtener la salida esperada:

    Buscar en nuestro catálogo: Harry Potter
    Harry Potter
    Buscar en nuestro catálogo: El código Da Vinci
    Lo sentimos, este libro está agotado
    

Comments are closed.