Actividad: un programa real#

En esta actividad, vamos a utilizar los conceptos que hemos visto previamente. Abre este cuaderno en tu Google Colab utilizando el botón “Open in Colab”, luego haz una copia en Drive (“Archivo > Guardar una copia en Drive”) para que puedas modificarlo.

Open In Colab

Comparte tu actividad en la discusión del curso.

Instrucciones#

Vamos a utilizar el diccionario biografias_boom para realizar las siguientes operaciones:

  1. Crear una lista con los autores que están en el diccionario.

  2. Determinar qué edad tenía cada autor al momento de publicar su obra principal.

  3. Determinar la edad promedio de los autores al momento de publicar su obra principal.

  4. Determinar la edad que tenían al momento de su defunción (en caso de que ya hayan fallecido).

  5. Responder a la pregunta ¿quién fue el más longevo?

Todas las celdas deben ejecutarse para que el programa funcione correctamente.

Cuida que cada función tenga el resultado esperado.

Al finalizar, el programa debe funcionar con cualquier otro grupo de autores. Para ello, tendrás que ejecutar la celda “Comprobación” y el resultado deberá ser correcto.

Diccionario#

biografias_boom = {
    "Julio Cortázar": {
        "nacionalidad": "Argentina",
        "bio": """Julio Cortázar nació en 1914. Vivió con sus padres en Suiza hasta que se mudó a Buenos Aires a la edad de cuatro años.40​ Al igual que otros escritores del boom, Cortázar llegó a cuestionar la política de su país: su oposición a Juan Domingo Perón lo llevó a dejar su puesto de profesor en la Universidad Nacional de Cuyo y en última instancia, a su exilio.41​.
        En 1951 se trasladó a París, donde pasó la mayor parte de su vida profesional, y en 1981 se convirtió en ciudadano francés.42​ Como García Márquez, Cortázar apoyó al gobierno cubano de Fidel Castro, al presidente chileno Salvador Allende, y a otros movimientos de izquierda como los sandinistas en Nicaragua.42​
        Entre sus influencias se encuentran Jorge Luis Borges y Edgar Allan Poe.43​ Su obra más importante y la que lo catapultó al reconocimiento internacional, es la novela Rayuela, publicada en 1963.42​ Se compone de 155 capítulos, 99 de los cuales son «fungibles», que se pueden leer en varios pedidos de acuerdo a la predilección de los lectores.
        Sus otros trabajos incluyen colecciones de cuentos como Bestiario (1951), Final del juego (1956), Las armas secretas (1959) y Todos los fuegos el fuego (1966). También escribió novelas como Los premios (1960) y Libro de Manuel (1973), y el inclasificable Historias de cronopios y de famas (1962). Falleció en París el 12 de febrero de 1984.""",
        "obra_principal": "Rayuela",
        "fecha_publicacion": "1963",
        "vivo": False,
    },
    "Gabriel García Márquez": {
        "nacionalidad": "Colombia",
        "bio": """
        Gabriel García Márquez nació en Aracataca, Colombia, en 1927. Junto a Mario Vargas Llosa, ha sido quien mayor proyección internacional ha logrado entre los escritores del boom. Gabo, como también se le conocía, empezó como periodista y escribió muchos artículos y relatos cortos, que fueron publicados en el diario El Espectador de Bogotá.44​ Después de residir unos años en Europa, se instaló en la Ciudad de México en 1961, donde residió hasta su fallecimiento.
        Es conocido por novelas como El coronel no tiene quien le escriba (1962), Cien años de soledad (1967), El otoño del patriarca (1975), y post-boom, como El amor en los tiempos del cólera (1985), y por haber recibido el Premio Nobel de Literatura en 1982. Ha logrado elogios de la crítica y éxito comercial general, sobre todo por la introducción de lo que se ha denominado realismo mágico en el mundo literario. Narró con métodos tradicionales hechos más o menos ajenos a la realidad, de modo que «lo más espantoso, las cosas más insólitas se dicen con la expresión impasible».45​ Un ejemplo comúnmente citado es el físico y espiritual de ascender al cielo de un personaje, mientras que cuelga la ropa a secar en Cien años de soledad. Esta novela cumbre del escritor colombiano, según estudios actuales, modifica la percepción que tenemos del pasado y construye una nueva mirada sobre el futuro.46​ García Márquez es ahora considerado como uno de los autores más significativos del siglo XX, como lo atestigua el haber sido galardonado con el Premio Nobel de Literatura en 1982. Falleció en México D.F. el 17 de abril de 2014.47​
        El autor es considerado, junto con Álvaro Mutis, como un escritor que realizó desde su obra un valioso aporte desde las letras colombianas durante el período denominado boom latinoamericano que está fuertemente influenciado por la presencia de escritores mexicanos, de la talla de Carlos Fuentes y Juan Rulfo. A partir del concepto de campo literario es lícito afirmar que la escritura de autor de Cien años de soledad produjo profundas transformaciones en la literatura del siglo XX.48​
        """,
        "obra_principal": "Cien años de soledad",
        "fecha_publicacion": "1967",
        "vivo": False,
    },
    "Carlos Fuentes": {
        "nacionalidad": "México",
        "bio": """
        Nacido en Panamá de padres mexicanos, en 1928, Carlos Fuentes comenzó a publicar en la década de 1950.49​ Fue hijo de un diplomático mexicano y vivió en ciudades como Buenos Aires, Santiago, Quito, Montevideo y Río de Janeiro, así como Washington D. C..50​ Sus experiencias de lucha contra la discriminación de México en los Estados Unidos le llevó a examinar más de cerca la cultura mexicana.51​ Su novela La muerte de Artemio Cruz (1962) describe la vida de un ex revolucionario mexicano en su lecho de muerte, cambios innovadores que emplean en un punto de vista. Otros trabajos importantes incluyen La región más transparente (1959), Aura (1962), Terra Nostra (1975), y la novela post-boom Gringo Viejo (1985).
        Fuentes no solo escribió algunas de las novelas más importantes de la época, también fue un crítico y publicista de Latinoamérica. En 1955, Fuentes y Emmanuel Carballo fueron fundadores de la Revista Mexicana de Literatura, que introdujo los latinoamericanos a las obras modernistas de Europa y las ideas de Jean-Paul Sartre y Albert Camus.52​ En 1969 publicó la obra crítica importante, La nueva novela hispanoamericana. Fuentes ocupó el cargo de profesor de literatura latinoamericana en la Universidad de Columbia (1978) y en Harvard (1987).53​ En una ocasión dijo que «el llamado boom, en realidad, es el resultado de cuatro siglos, literariamente, llegado a un momento de urgencia en que la ficción se convirtió en la manera de organizar las lecciones del pasado».54​Falleció en México D.F. el 15 de mayo de 2012.
        """,
        "obra_principal": "La muerte de Artemio Cruz",
        "fecha_publicacion": "1962",
        "vivo": False,
    },

    "Mario Vargas Llosa": {
        "nacionalidad": "Perú",
        "bio": """
            Jorge Mario Pedro Vargas Llosa (Arequipa, 28 de marzo de 1936), conocido como Mario Vargas Llosa, es un escritor peruano que cuenta también con la nacionalidad española desde 1993. Considerado uno de los más importantes novelistas y ensayistas contemporáneos, sus obras han cosechado numerosos premios, entre los que destacan el Nobel de Literatura 2010, el Cervantes 1994 —considerado como el más importante en lengua española—, el Príncipe de Asturias de las Letras 1986, el Biblioteca Breve 1962, el Rómulo Gallegos 1967 y el Planeta 1993, entre otros.
            Como escritor, alcanzó la fama en la década de 1960 con novelas como La ciudad y los perros (1963), La casa verde (1966) y Conversación en La Catedral (1969). Continuó escribiendo prolíficamente en varios géneros literarios, como el ensayo, el artículo y el teatro. Varias de sus obras han sido adaptadas al cine y a la televisión. La mayoría de sus novelas están ambientadas en Perú y exploran su concepción sobre la sociedad peruana; en cambio, en La guerra del fin del mundo (1981), La fiesta del Chivo (2000) y El sueño del celta (2010), ubica sus tramas en otros países.
            """,
        "obra_principal": "La casa verde",
        "fecha_publicacion": "1966",
        "vivo": True,
    }}

Ejercicio 1 - Crear una función llamada lista de autores, que regrese una lista con el nombre de cada uno de los autores del boom.#

Clave: Debes realizar un foor loop sobre el diccionario y agregar cada nombre a una lista.

def autores(): # pasa un parámetro
    """Completa la función para que devuelva una lista con los nombres de los autores"""
    autores = []
    for autor in :
        autores.append(autor)
    return autores

Llama a tu función en la siguiente celda y comprueba que el resultado sea correcto. Asigna el resultado de la función a la variable autores.

# escribe en esta celda el llamado a la función
autores_boom = 
print(autores_boom)
# Comprobación
assert autores(biografias_boom) == ['Julio Cortázar', 'Gabriel García Márquez', 'Carlos Fuentes', 'Mario Vargas Llosa'], "La función no devuelve los nombres de los autores correctamente"
print("¡El ejercicio está correcto!")

Ejercicio 2 - Escribe una función que regrese la fecha de nacimiento del autor a partir de la información de su biografía#

Clave: Vamos a reutilizar nuestra función ‘extraer fechas’ para seleccionar la fecha menor en toda la biografía.

# No necesitas hacer nada, solamente ejecutar esta celda
import re

def extraer_fechas(biografia):
    # use the pattern to find all dates in the biographical text
    return re.compile(r"\b\d{4}\b").findall(biografia)

Completa los espacios en blanco en la siguiente celda para que la función regrese la fecha de nacimiento del autor.

def fecha_nacimiento(, biografias_boom): # pasa dos parámetros
    """Completa la función para que devuelva la fecha de nacimiento del autor"""
    autor = biografias_boom[] # completa esta línea
    fechas = extraer_fechas(autor["bio"])
    return min(fechas)

Ejecuta la siguiente celda para comprobar que todo esté funcionando correctamente. Debe imprimir el valor 1927.

print(fecha_nacimiento("Gabriel García Márquez", biografias_boom))

Ahora el último paso. Completa los espacios en blanco para que esta función de como resultado la edad del autor al momento de publicar su obra principal.

def calcular_edad(autor, biografias_boom): # pasa dos parámetros
    """Completa la función para que devuelva la edad del autor en el año de publicación de su obra principal"""
    autor_dict = biografias_boom[autor]
    edad = int(autor_dict["fecha_publicacion"]) - # completa esta línea
    return edad

Comprobemos que todo haya funcionado correctamente

autor_test = "Gabriel García Márquez"
edadGGM = calcular_edad(autor_test, biografias_boom)
edadGGM
assert calcular_edad("Gabriel García Márquez", biografias_boom) == 40, "La función no devuelve el valor correcto o no está bien implementada"
print("¡El ejercicio está correcto!")

Ejercicio 3 - Escribe una función que regrese la edad promedio de los autores al momento de publicar su obra principal.#

Clave: Vamos a utilizar la función que acabamos de crear para calcular la edad de cada autor, la lista de autores que creamos previamente y luego calcular el promedio.

def edad_promedio(autores, bios=biografias_boom): # el primer parámetro corresponde a la lista de autores
    """Completa la función para que devuelva la edad promedio de los autores"""
    edad_promedio = 0
    for autor in autores:
        edad_promedio += # añade en esta línea la función que calcula la edad en la que el autor publicó su obra principal
    return edad_promedio / len(autores)
promedio_edad = edad_promedio(autores_boom)
print(promedio_edad)
assert edad_promedio(autores_boom) == 38.25, "La función no devuelve el valor correcto o no está bien implementada"
print("¡El ejercicio está correcto!")

Ejercicio 4 - Escribe una función que regrese la edad de los autores al momento de su defunción.#

Clave: Será necesario crear una función para extraer la fecha de defunción de la biografía. Luego, utilizar la función que acabamos de crear para calcular la edad de cada autor al momento de su defunción. También será necesario determinar si el autor ya falleció o no.

def fecha_defuncion(autor, biografias_boom): # pasa dos parámetros
    """Completa la función para que devuelva la fecha de defunción del autor"""
    autor_dict = biografias_boom[autor]
    if autor_dict["vivo"]:
        return "El autor está vivo"
    else:
        fechas = (autor_dict["bio"]) # completa esta línea con la función que extrae las fechas de la biografía
        return max(fechas)

Comprobemos que todo ha salido bien.

fecha_defuncion("Mario Vargas Llosa", biografias_boom)

Ahora, completa lo necesario para que la siguiente función regrese la edad de defunción del cada autor.

def edad_defuncion(autor, biografias_boom):
    """Completa la función para que devuelva la edad del autor al momento de su defunción"""
    autor_dict = biografias_boom[autor]
    fecha_def = # completa esta línea con la función que calcula la fecha de defunción
    if fecha_def != "El autor está vivo":
        edad = int(fecha_def) - # completa esta línea con la función que calcula la fecha de nacimiento del autor
        return edad
edad_defuncion("Gabriel García Márquez", biografias_boom)

Ejercicio 5 - Escribe una función que regrese el nombre del autor más longevo.#

Clave: Vamos a utilizar la función que acabamos de crear para calcular la edad de cada autor al momento de su defunción. También será necesario determinar si el autor ya falleció o no.

def longevo(autores, bio=biografias_boom):
    """Completa la función para que devuelva el nombre del autor más longevo"""
    edad_max = 0
    autor_max = ""
    for autor in autores:
        edad = # completa esta línea con la función que calcula la edad de defunción del autor
        if edad != None and edad > edad_max:
            edad_max = edad
            autor_max = autor
    return autor_max, edad_max

Comprobemos que todo haya funcionado correctamente.

print(f"El autor más longevo del Boom Latinoamericano fue {longevo(autores_boom)[0]} quien vivió {longevo(autores_boom)[1]} años")

Comprobación#

Ahora es el momento de la verdad. Ejecuta la siguiente celda para comprobar que tu programa funciona con cualquier otro grupo de autores.

import requests

autores_test = "https://raw.githubusercontent.com/Taller-Abierto-de-Humanidades-Digitales/curso_python/main/data/precursores_boom.json"
r = requests.get(autores_test)
autores_boom_test = r.json()

precursores = autores(autores_boom_test)
print(precursores)
promedio_edad_precursores = edad_promedio(precursores, bios=autores_boom_test)
print(f"La edad promedio de los precursores del Boom Latinoamericano fue de {promedio_edad_precursores} años")
longevo_precursores = longevo(precursores, bio=autores_boom_test)
print(f"El autor más longevo de los precursores del Boom Latinoamericano fue {longevo_precursores[0]} quien vivió {longevo_precursores[1]} años")