3 usuarios conectados

Sugerir género literario en Python

Comparte esto

 
Escribe un código Python que tome un tipo de libro ("novela", "ciencia ficción", "misterio", "historia", "poesía") y te sugiera aleatoriamente un autor o autora famosa de ese género.
.


Más ejercicios




Mostrar/Ocultar ejercicio resuelto


  Solución al Ejercicio: Sugerir género literario

📋 Copiar código


import random

def sugerir_autor_por_genero_literario(genero_libro):
  """
  Toma un género literario y sugiere aleatoriamente un autor o autora famosa de ese género.

  Args:
    genero_libro: El género literario (cadena de texto).

  Returns:
    Un mensaje (cadena de texto) con la sugerencia del autor o autora.
  """
  autores_por_genero = {
      "novela": ["Gabriel García Márquez", "Jane Austen", "Miguel de Cervantes", "Virginia Woolf", "Haruki Murakami"],
      "ciencia ficción": ["Isaac Asimov", "Philip K. Dick", "Ursula K. Le Guin", "Arthur C. Clarke", "Frank Herbert"],
      "misterio": ["Agatha Christie", "Arthur Conan Doyle", "Gillian Flynn", "Raymond Chandler", "Jo Nesbo"],
      "historia": ["Yuval Noah Harari", "Mary Beard", "Simon Schama", "Antony Beevor", "Fernanda Braudel"],
      "poesía": ["Pablo Neruda", "Federico García Lorca", "William Shakespeare", "Sylvia Plath", "Gloria Fuertes"]
  }

  genero_lower = genero_libro.lower()
  if genero_lower in autores_por_genero:
    autor_sugerido = random.choice(autores_por_genero[genero_lower])
    return f"Si te apetece leer '{genero_libro}', quizás te interese un libro de: ¡{autor_sugerido}!"
  else:
    return f"No tengo muchas sugerencias para el género '{genero_libro}' en mi lista. ¡Quizás puedas explorar librerías online!"

# Ejemplo de uso
genero1 = "novela"
autor1 = sugerir_autor_por_genero_literario(genero1)
print(autor1)

genero2 = "ciencia ficción"
autor2 = sugerir_autor_por_genero_literario(genero2)
print(autor2)

genero3 = "terror"
autor3 = sugerir_autor_por_genero_literario(genero3)
print(autor3)

genero4 = "POESÍA"
autor4 = sugerir_autor_por_genero_literario(genero4)
print(autor4)

Explicación del Código:

  1. import random:

    • Importa el módulo random para poder elegir un autor o autora aleatoria de la lista asociada al género literario.
  2. def sugerir_autor_por_genero_literario(genero_libro)::

    • Define una función llamada sugerir_autor_por_genero_literario que toma el género del libro (genero_libro) como argumento.
  3. """Docstring...""":

    • La cadena de documentación explica la función, su argumento y lo que devuelve.
  4. autores_por_genero = {...}:

    • Se crea un diccionario llamado autores_por_genero. Las claves son géneros literarios (en minúsculas) y los valores son listas de autores o autoras famosas dentro de ese género.
  5. genero_lower = genero_libro.lower():

    • Se convierte el genero_libro a minúsculas para que la búsqueda en el diccionario sea insensible a mayúsculas y minúsculas.
  6. if genero_lower in autores_por_genero::

    • Se verifica si el genero_lower existe como clave en el diccionario autores_por_genero.
  7. autor_sugerido = random.choice(autores_por_genero[genero_lower]):

    • Si el género se encuentra en el diccionario, se elige aleatoriamente un autor o autora de la lista asociada a ese género utilizando random.choice().
  8. return f"Si te apetece leer '{genero_libro}', quizás te interese un libro de: ¡{autor_sugerido}!":

    • Se devuelve un mensaje sugiriendo el autor o autora aleatoria encontrada.
  9. else::

    • Si el género no se encuentra en el diccionario.
  10. return f"No tengo muchas sugerencias para el género '{genero_libro}' en mi lista. ¡Quizás puedas explorar librerías online!":

    • Se devuelve un mensaje indicando que no se encontraron sugerencias para ese género en la lista.
       
  11. Ejemplo de uso:

    • Se definen varios géneros literarios y se llama a la función sugerir_autor_por_genero_literario con cada uno para obtener una sugerencia de autor o autora.