Hoy vamos a ver más ejercicios de Python con secuencias de ADN. Son 9 ejercicios y se trabaja con cadenas, bases y secuencias.

La descripción dice así:

  1. Desarrollar un programa en Python para usar distintas funciones. El programa debe ofrecer un menú.
  2. Al comienzo del programa preguntar si se desea ingresar una secuencia particular en cada opción correspondiente del menú o si se desea trabajar todo el programa con una misma secuencia fija, que se cargará inicialmente.
  3. En todos los casos se debe controlar que las secuencias ingresadas sean válidas (contengan exclusivamente “A”, “C”, “T”, “G”, y largo de la secuencia mayor o igual a 1) sin importar mayúsculas y minúsculas.

Luego se muestra el menú con estas opciones:

  • Opción 0: Salir del programa
  • Opción 1-9: En cada opción, según se haya indicado inicialmente, se trabaja con la secuencia fija o se solicita una al usuario si corresponde.

En caso de ser necesarios datos adicionales específicos, se solicitan. En cada opción se invoca a la función correspondiente que se detalla a continuación y se muestra el resultado por pantalla.

Python – Secuencias de ADN

A continuación colocaré los 9 puntos que se solicitan y luego el código:

1. transformar_ADN_ARN(secuencia): retorna la transformación de la secuencia de ADN en ARN (cambiando la base “T” por “U”).

Ejemplo: Recibe: “AGGTCT”, retorna: “AGGUCU”.

2. tieneStartStop(secuencia): retorna verdadero si la secuencia empieza con “ATG” y termina con stop: “TGA” y además, entre ambas debe haber una cantidad múltiplo de 3 de bases. No puede contener otras secuencias “ATG” o “TGA”.

Ejemplo: Recibe: “ATGCCAATTTGA”, retorna true. Recibe: “ATACCA”, retorna false.

3. mostrar(secuencia): considerar las bases “A”, “C”, “T” y “G”, retornar la información de cada una de ellas, indicando la cantidad presente en la secuencia (representándola con la misma cantidad de “*””) y el % correspondiente.

Ejemplo: Recibe: “TAAACAACCT”, retorna: A ***** 50.0% C *** 30.0% T ** 20.0% G 0.0%

4. resumir(secuencia): retorna la secuencia en forma resumida, indicando por cada base de la secuencia la cantidad de veces que está en forma consecutiva.

Ejemplo: Recibe: “ATTCAAAAATCAGGG”, retorna: “A1T2C1A5T1C1A1G3” Recibe: “AAAAAAAAAAAA”, retorna: “A12”.

5. duplicar(secuencia): retorna la secuencia recibida duplicando cada base.

Ejemplo: Recibe: “ATAGTG”, retorna: “AATTAAGGTTGG”.

6. segmentos(secuencia): retorna la cantidad de segmentos en la secuencia recibida. Un segmento se define como una secuencia de una o más bases “G”, “T” y, o “C”, delimitada por “A”.

Ejemplo: Recibe: “AATAGCACTTAC”, retorna: 3. Recibe: “AATAGCACTTACA”, retorna: 4. Recibe: “AAAAA”, retorna: 0.

7. expandir(datos): recibe un string de datos formado por bases y cantidades (se asume válido, las cantidades van de 1 a 9) y retorna la secuencia correspondiente.

Ejemplo: Recibe “A1T2C1A5T1C1A1G3”, retorna: “ATTCAAAAATCAGGG”

8. primeraBaseUnica(secuencia): retorna cuál es la posición de la primera base que está una única vez en la secuencia. Si no hay ninguna, retorna -1.

Ejemplo: Recibe “GAGTAAA”, retorna 3. Recibe: “GATAAGACTTC”, retorna -1. Recibe: “AGC” retorna 0.

9. periodica(secuencia): recibe una secuencia y retorna verdadero si es periódica, esto es, si se puede rearmar tomando un subgrupo de una o más bases sucesivas de la secuencia y replicándolos para formar la secuencia recibida, concatenando el subgrupo las veces necesarias.
Ejemplo: Recibe: “AGAG”, retorna true. Recibe: “AGA”, retorna false. Recibe: “GATGATGATGAT”, retorna true.

Código de solución

Ya mostré anteriormente lo solicitado, ahora la solución. Por cierto, ya he explicado por separado varios ejercicios que aparecen aquí, dejo los enlaces en el lugar donde corresponde.

Para el ejercicio 1 simplemente remplazamos una letra por otra. En el segundo comprobamos si empieza y termina con una subcadena, para el tercero contamos la frecuencia de letras que hay en una frase.

Siguiendo con el ejercicio 4 lo que se hace es comprimir o resumir una cadena, en el 5 duplicamos cada letra.

Luego en el 7 tenemos que expandir la cadena según el número que aparece a su lado, en el 8 comprobamos si la base aparece solo una vez y en el 9 comprobamos si la string es periódica.

También puedes ver que, cumpliendo con los requisitos del ejercicio, se solicita la secuencia de ADN al inicio en caso de que el usuario quiera trabajar con ella en todos los puntos, y si no, se le solicita en cada punto.

El menú también está implementado. Yo ejecuté una prueba rápida y aparece lo siguiente:

Python - Ejercicios resueltos con secuencias de ADN y cadenas

Python – Ejercicios resueltos con secuencias de ADN y cadenas

Para terminar te dejo con más tutoriales y ejercicios resueltos de Python en mi blog.


Estoy disponible para trabajar en tu proyecto o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.
Si el post fue de tu agrado muestra tu apoyo compartiéndolo, suscribiéndote al blog, siguiéndome o realizando una donación.

Suscribir por correo

Ingresa tu correo y recibirás mis últimas entradas sobre programación, open source, bases de datos y todo lo relacionado con informática

Únete a otros 5,208 suscriptores


parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

0 Comentarios

Deja un comentario

Marcador de posición del avatar

Tu dirección de correo electrónico no será publicada.

A %d blogueros les gusta esto: