Ipt Mpsi TP6
Ipt Mpsi TP6
Ipt Mpsi TP6
TP no 6 - Chaı̂nes de caractères
2 Quel est le nombre de caractères de la chaı̂ne s ci-dessus ? Le vérifier avec la commande adéquate.
3 Créez les chaı̂nes s1="diplo" et s2="docus" et concaténez-les pour créer s3 qui devrait être un
dinosaure.
7 Par exemple, créez une chaı̂ne s4 contenant le texte que vous souhaitez, puis tapez s4.upper() La
chaı̂ne s4 a-t-elle été modifiée par cette commande ?
En allant dans l’aide de str, vous trouverez d’autres commandes du même type. . .
2 Recherche de caractères
8 Créez une fonction caractere(M,c) prenant en entrée deux chaı̂nes de caractères, la chaı̂ne c étant
de longueur 1, et retournant True ou False selon que c est ou n’est pas un caractère de M.
1
Bien sûr, il suffit d’écrire c in M pour avoir la réponse. . . mais parcourez donc la chaı̂ne M “manuel-
lement” : ce TP est un entraı̂nement.
9 Créez une fonction positions_caractere(M,c) qui renvoie la liste des positions où on trouve le
caractère c dans M.
Par exemple, pour la chaı̂ne ornithorynquologie et la lettre o, on devra obtenir r0, 6, 12, 14s. Si le
caractère ne se trouve pas dans la chaı̂ne, on obtiendra une liste vide.
3 Recherche de sous-chaı̂nes
12 Ecrire une fonction match(M,m,p) qui détermine si on peut lire le mot m en position p dans M.
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
Par exemple, dans le mot M “ on
a b c a e b c d a b c d a b c
0 1 2
peut lire le mot m “ en positions 5 et 9, mais nulle part ailleurs.
b c d
Bien sûr, il suffit d’écrire m==M[p:p+len(m)] (slicing) pour avoir la réponse. . . mais parcourez donc
la chaı̂ne m “manuellement” : ce TP est un entraı̂nement.
13 Ecrire une fonction sous_mot(M,m) prenant en entrée deux chaı̂nes de caractères, et retournant
True ou False selon que m est ou n’est pas un sous-mot de M (on dit aussi que m est un motif de M).
Avec l’exemple ci-dessus, la fonction renvoie True.
Bien sûr, il suffit d’écrire m in M pour avoir la réponse. . . mais parcourez donc la chaı̂ne M “manuel-
lement” : ce TP est un entraı̂nement.
15 Ecrire une fonction compte_sous_mot(M,m) prenant en entrée deux chaı̂nes de caractères et re-
tournant le nombre de positions où on peut lire m dans M. Avec l’exemple ci-dessus, la fonction renvoie 2.
On pourrait bien renvoyer la longueur de la liste de la question précédente. . . faites plutôt un comp-
teur !
17 Les fonctions que vous avez écrites ne fonctionnent-elles pas aussi avec des listes ?
2
3.1 Application
On donne le programme suivant.
1 from random import randint
2
3 nucleotides=’ATGC’
4
5 def caractere_aleatoire():
6 return nucleotides[randint(0,3)]
7
8 def chaine_aleatoire(n):
9 return ’’.join([caractere_aleatoire() for _ in range(n)])
10
11 if __name__=="__main__":
12 print(chaine_aleatoire(300))
20 Créez une chaı̂ne aléatoire m de longueur 5, et une deuxième M de longueur 104 . Déterminez le
nombre d’occurences de m dans M . Faites la moyenne sur une centaine d’exemples de M .
Pouvait-on prévoir ce résultat par un calcul de probabilités ?
4 Pour terminer
4.1 Répétition d’un nucléotide
On reprend l’application de la section précédente.
21 ‹‹ Ecrire une fonction longueurA(M) qui renvoie la longueur de la plus longue sous-chaı̂ne de M
formée uniquement du nucléotide A.
Par exemple, longueurA(ACTAAACCCTTGGGATTACATGGGGAAGGTGTCGTAAAACGATTTTCAAC) renvoie 4.
22 ‹ ‹ ‹ Ecrire une fonction longueurATGC(M) qui renvoie la longueur de la plus longue sous-chaı̂ne
de M formée du même nucléotide (A, T , G ou C).
Par exemple, longueurATGC(CGAGTTCGCAGAAGTGTCCATATAAGATAGGCCGAGTTTTTCATCAGCGT) renvoie 5.
23 ‹‹ Créez (et documentez) une fonction nombre_mots qui compte le nombre de mots de la chaı̂ne de
caractères. Par exemple, nombre_mots('Il fait très beau') devrait donner 4.
Vous pourrez notamment être attentifs : aux espaces répétés, aux signes de ponctuation, aux apos-
trophes. . .
3
24 ‹ ‹ ‹ Ecrire une fonction long_mot qui prend en argument une chaı̂ne de caractères et renvoie la
longueur du plus long mot du texte. On suppose que la chaı̂ne passée en argument est formée uniquement
de mots composés de lettres majuscules ou minuscules, séparés par un ou plusieurs espaces (pas de
ponctuation). Par exemple, en passant en argument la chaı̂ne