Skip to content

Instantly share code, notes, and snippets.

@giacomocavalieri
Last active March 15, 2025 08:14
Show Gist options
  • Save giacomocavalieri/fe96c9e1cae8e4623405f2cf46a720c2 to your computer and use it in GitHub Desktop.
Save giacomocavalieri/fe96c9e1cae8e4623405f2cf46a720c2 to your computer and use it in GitHub Desktop.

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).

  1. Scrivere una funzione filamento_valido che prende in input una stringa e restituisce True 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 che R non è una delle basi azotate del DNA.
  2. 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).

  1. 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".
  2. 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"

  1. 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"

  2. Scrivere almeno 4 test per la funzione

  3. 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
  4. Scrivere una funzione verifica_complementari che prende in input due argomenti rappresentanti due stringhe di DNA e restituisce True se una è complementare dell'altra, False altrimenti

  5. Scrivere almeno 2 test per questa funzione

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment