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:
-
import random
:
- Importa el módulo
random
para poder elegir un autor o autora aleatoria de la lista asociada al
género literario.
-
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.
-
"""Docstring..."""
:
- La cadena de documentación explica la
función, su argumento y lo que devuelve.
-
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.
-
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.
-
if genero_lower in
autores_por_genero:
:
- Se verifica si el
genero_lower
existe como clave en el diccionario autores_por_genero
.
-
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()
.
-
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.
-
else:
:
- Si el género no se encuentra en el
diccionario.
-
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.
-
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.