Bonjour,
Je suis débutante. J'aimerais réaliser l'exercice ci-dessous. J'y suis presque... Mais je bloque depuis plus d'une demi heure, je ne sais pas ce qui coince. Il n'y a pas d'erreur dans le code mais je n'obtiens pas ce que je veux: il faut pour respecter l'énoncé que la paire TGCC s'affiche aussi dans la liste résultat, mais elle n'est pas retournée...
On considere des chaines de caracteres dans l'alphabet A,C,G,T representant des sequences ADN. Une telle chaine est dite complementaire d'une autre, si on obtient la deuxieme en remplacant chaque occurrence de la lettre A par T, T par A, G par C, et C par G dans la premiere. Par exemple, les sequences ACCGAT et TGGCTA sont complementaires.
Ecrire une fonction qui recoit en parametre une liste de telles chaines, et renvoie une nouvelle liste dans laquelle les paires complementaires sont eliminees. Pour chaque paire complementaire presente dans la liste de depart, seule la seconde cha^ne de la paire sera conservee dans la liste resultat. Par exemple, la liste suivante : ['ATCC', 'ACGG', 'TGCC', 'ACC', 'TAGG'] contient deux paires complementaires : 'ACGG' et 'TGCC' d'une part, et 'ATCC' et 'TAGG' d'autre part. On doit eliminer la premiere cha^ne (dans l'ordre de la liste) de chaque paire. La liste renvoyee par la fonction sera donc : ['TGCC', 'ACC', 'TAGG']. On supposera que toutes les cha^nes de la liste de depart sont distinctes.
Ma solution:
def fonction(L):
....T='A'
....A='T'
....G='C'
....C='G'
....for chaine in L:
........i=0
........n=0
........if L[n]== L[n+i]:
............del L[n]
............i=i+1
........elif L[n]!=L[n+i]:
............return L[n]
....return L
print fonction(['ATCC', 'ACGG', 'TGCC', 'ACC', 'TAGG'])
Merci d'avance!
Partager