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')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.
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 oppostofilamento_opposto('CTAATGT')Output'GATTACA'1
1 2
1 2 3
1 2 3 4
…
E così via fino a n.
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(' ')1
12
123
1234
12345
123456
1234567
12345678
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 …]
…
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)[12, 14, 16, 18, 20]
[18, 21, 24, 27, 30]
[24, 28, 32, 36, 40]
[30, 35, 40, 45, 50]
mat = [[x1*x2 for x2 in v2] for x1 in v1]for row in mat: print(row)(570)
