Saltar a contenido

Parcialito 1 - 2024a - Tema 1#

Ejercicio 1#

Un bibliotecario necesita un sistema informático con el que pueda gestionar los libros y acceder a la información filtrando los datos mediante algún criterio. Para cumplir con este requerimiento, se propone implementar un programa en lenguaje Python, utilizando diccionarios que permitan almacenar la información de cada libro en una estructura como la siguiente:

{'Titulo': 'Titulo del libro', 'Autor': 'Nombre', 'Genero': 'Género literario'}
  1. Definir la función agregar_libro(lista_libros) que reciba como argumento una lista de libros, le solicite al usuario que ingrese los datos de un nuevo libro y lo añada a la lista. La función debe retornar la lista actualizada con el nuevo libro. Ejemplo del ingreso de datos:

    Ingrese los datos del libro
    Título: 1984
    Autor: George Orwell
    Género: Novela
    
  2. Implemente una función llamada info_libros(lista_libros, genero) que reciba la lista de libros y un string que especifique el género literario deseado (por simplicidad, suponga solo los géneros: Fantasía, Novelas y Filosofía) y muestre por pantalla un resumen con todos los libros que poseen el género especificado. Si el género no existe, debe mostrar el mensaje “No hay libros con ese género”. Una posible salida (para el género Novelas) sería:

    Título: 1984
    Autor: George Orwell
    
    Título: Drácula
    Autor: Bram Stoker
    
    Título: Don Quijote de la Mancha
    Autor: Miguel de Cervantes
    
  3. Asumiendo que ya existe una lista de libros, implementar un código principal que solicite al usuario el género y muestre por pantalla el resumen de todos los libros que cumplen con ese género.

Ejercicio 2#

Se requiere implementar un programa que calcule la similitud entre dos cadenas de ADN. Se propone utilizar la distancia de Hamming (como medida de similitud) y en base a ésta definir el resultado de la comparación. Para ello se pide:

  1. Implementar una función en Python llamada distancia_hamming(ADN1, ADN2) que acepte dos cadenas de texto como argumentos y retorne la distancia de Hamming entre ellas. Asuma que ambos strings tienen el mismo largo. Además, defina el Docstring de esta función de manera que quede correctamente documentada.

    Ayuda: La distancia de Hamming se define como la cantidad de elementos que difieren entre dos secuencias de igual longitud. Por ejemplo: HOLA y HOJA tienen distancia 1; PERRO y PARDO tienen distancia 2.

  2. Implementar una función llamada comparar_adn(ADN1, ADN2, u), que reciba ambas secuencias de ADN y un número entero u con el que se especifica un umbral de comparación. La función debe retornar un string que contenga alguno de los siguientes mensajes:

    • ‘Iguales’ si la distancia entre ambas cadenas es d=0.
    • ‘Similares’ si la distancia entre ambas cadenas es 0 < d <= u.
    • ‘Distintas’ si la distancia entre ambas cadenas es d > u.
  3. Escriba un programa principal que utilice dos cadenas de ADN, las compare e imprima un reporte por pantalla. Suponga que ambas cadenas y el umbral están definidos al inicio del código, por ejemplo:

    u = 8
    ADN1 = 'GAGCCTACTAACGGGAT'
    ADN2 = 'CATCGTAATGACGGCCT'
    

    El reporte de salida debe verse como el siguiente ejemplo:

    Reporte - Comparación ADN
    ADN-1: GAGCCTACTAACGGGAT
    ADN-2: CATCGTAATGACGGCCT
    Conclusión: Similares
    

    Nota: no es necesario que copie en la hoja las cadenas completas para ADN1 y AND2.