Python: Esercizi svolti per bioinformatica (parte II)

Cerca nel sito

Altri risultati..

Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors

Cerca nelle Categorie

bioinformatica

ESERCIZIO 1

Riprendiamo l’esercizio 3 visto nella prima parte, e risolverlo definendo una funzione complementare, che ritorni il nucleotide complementare a quello passato come argomento
● Provare a invocare la funzione così definita dalla console interattiva

SOLUZIONE

def complementare(nucleotide):
 nucleotide = nucleotide.capitalize()
 if nucleotide == 'A':
  return 'T'
 elif nucleotide == 'C':
  return 'G'
 elif nucleotide == 'G':
  return 'C'
 elif nucleotide == 'T':
  return 'A'
complementare('A')
Output
‘T’

La complementarità

Il concetto di complementarità in biologia molecolare si riferisce a molecole di DNA o RNA a doppio filamento o ibridi temporanei tra le due. Queste infatti consistono di due filamenti complementari di nucleotidi, che non sono legati covalentemente, bensì connessi via due o tre legami idrogeno.

Per ogni nucleotide esiste un solo nucleotide complementare, ovvero che può formare un legame idrogeno con il primo: adenina e timina (DNA) / uracile (RNA) sono complementari tra loro, così come guanina e citosina. Sfruttando queste informazioni, è possibile ricostruire la sequenza nucleotidica del filamento complementare di un filamento di DNA la cui sequenza sia nota.

bioinformatica complementarietà

ESERCIZIO 2

Aggiungere al programma precedente una funzione filamento_opposto(...) che utilizzi la funzione complementare(...) per ritornare il filamento opposto a quello passato come argomento.

SOLUZIONE

def filamento_opposto(filamento):
 opposto = ''
 for nucleotide in filamento:
  opposto += complementare(nucleotide)
 return opposto
filamento_opposto('CTAATGT')
Output
'GATTACA'
ESERCIZIO 3
Scrivere un programma che legga un intero n da tastiera e stampi a schermo:
1
1 2
1 2 3
1 2 3 4
…
E così via fino a n.

SOLUZIONE

In Python si può usare la print senza andare a capo? 

Ti sarai accorto che, ogni volta che usi la funzione “print” in Python viene stampato tutto quello che vuoi sul tuo schermo, ma ad ogni invocazione vai a capo.

Come evitare di andare a capo?

Impostiamo il parametro “end” come stringa vuota nella funzione print():

print('stringa', end="")

Questo parametro, usato come secondo della funzione “print” , fa una cosa molto molto semplice: specifica come deve finire la riga stessa.

Di default infatti, è impostato come “newline”.

 

n = int(input('Inserisci un numero n: '))
for i in range(1,n+1): # l'ultimo indice e' escluso!
  #print(i)
  for j in range(1,i+1): # l'ultimo indice e' escluso!
 print (j,end="")
  print(' ')
Output
Inserisci un numero n: 8
1
12
123
1234
12345
123456
1234567
12345678
ESERCIZIO 4
Scrivere un programma che, dati i due elenchi di numeri sottostanti, crei la matrice dei loro prodotti:
v1: 1,2,3,4,5
v2: 6,7,8,9,10
matrice:
1*6 1*7 1*8 …
2*6 2*7 2*8 …
…
● Completare il programma con una stampa della matrice riga per riga:
[6, 7, 8 …]
[12, 14, 16 …] 
…
SOLUZIONE
v1 = (1,2,3,4,5)
v2 = (6,7,8,9,10)
mat = []
for i, x1 in enumerate(v1):
  mat.append([])
  for x2 in v2:
    mat[i].append(x1*x2)
for row in mat:
  print(row)
Output
[6, 7, 8, 9, 10]
[12, 14, 16, 18, 20]
[18, 21, 24, 27, 30]
[24, 28, 32, 36, 40]
[30, 35, 40, 45, 50]
Una possibile alternativa:
mat = [[x1*x2 for x2 in v2] for x1 in v1]
for row in mat:
  print(row)

(570)

Ti potrebbe interessare anche:  Python: esercizi sulle stringhe

Altri articoli nella categoria "bioinformatica"

PubblicitàPubblicità