Una molecola di DNA si compone di due filamenti a formare una doppia elica. Ciascun filamento è composto da 4 possibili basi azotate: Adenina (A), Timina (T), Guanina (G) e Citosina (C).
- Scrivere una funzione
filamento_valido
che prende in input una stringa e restituisceTrue
se questa rappresenta un filamento di DNA valido,False
altrimenti. Per esempio"ATGCCG"
è un filamento valido perché contiene le sole basi valide,"RACG"
non è valido dato cheR
non è una delle basi azotate del DNA. - Scrivere almeno 4 test per la funzione, quali sono casi particolari a cui prestare attenzione?
I filamenti che compongono la doppia elica del DNA si legano fra loro secondo uno specifico pattern; infatti, le uniche coppie che possono formarsi fra basi sono: adenina con timina (e viceversa), e guanina con citosina (e viceversa).
- Scrivere una funzione
filamento_complementare
che prende in input una stringa rappresentante un filamento di DNA valido (si suppone che l'input della funzione sia già corretto!) e restituisce il filamento complementare che può legarsi ad esso. Per esempio il complementare di"ATTCAG"
è"TAAGTC"
. - Scrivere almeno 4 test per la funzione, attenzione dato che la funzione si aspetta di prendere in input solo sequenze valide di DNA, non ha senso testarla con sequenze non valide!
Un singolo filamento di DNA può essere utilizzato come "stampo" per produrre dei filamenti di RNA, una molecola che viene poi
utilizzata per produrre proteine. Ad ogni base azotata nel filamento stampo corrisponde una diversa base nell'RNA ottenuto:
all'Adenina corrisponde l'Uracile, alla Timina corrisponde l'Adenina e alla Guanina la Citosina (e viceversa).
Per esempio l'RNA ottenuto dal questo filamento di DNA stampo "ATCG"
è "UAGC"
-
Scrivere una funzione
traduci_in_rna
che prende in input un filamento di DNA valido (si suppone che l'input della funzione sia già corretto!) e restituisce la molecola di RNA ottenuta utilizzandolo come stampo. Per esempio a"TTCGAA"
corrisponde"AAGCUU"
-
Scrivere almeno 4 test per la funzione
-
Comporre le funzioni definite fino ad ora in un programma che prende in input una stringa inserita dall'utente, se rappresenta una sequenza valida di DNA stampa il filamento di DNA complementare e il corrispondente filamento di RNA. Il programma deve continuare a chiedere un input fino a quando non viene fornita una molecola di DNA valida. Un esempio di esecuzione:
> inserire un filamento di DNA TCRRN > non è un filamento valido, inserire un filamento valido: CGGT > GCCA
-
Scrivere una funzione
verifica_complementari
che prende in input due argomenti rappresentanti due stringhe di DNA e restituisceTrue
se una è complementare dell'altra,False
altrimenti -
Scrivere almeno 2 test per questa funzione