TSI - Travaux Pratiques d’informatique
09.Recherche d’un mot dans une chaˆıne de caract` eres
Nous utiliserons dans ce TP le langage de programmation Python au moyen de l’environnement de d´eveloppement IDLE.
Exercice 1. Tester le programme suivant :
def extraire(l,a,b):
’’’extraction des caract` eres d’indices compris entre a et b dans la cha^ ıne de caract` eres l’’’
m=""
for k in range(a,b+1):
m=m+l[k]
return(m)
Exercice 2. Cr´eer puis tester une fonction renverser de la variable l qui retourne la chaˆıne de caract`eres obtenue en lisant les caract`eres de la chaˆıne l dans l’ordre d´ecroissant de leurs indices.
(par exemplerenverser(”python”) vaut ”nohtyp”)
Exercice 3. Cr´eer puis tester une fonction debut des variables l et m permettant de tester si la chaˆıne de caract`eres l d´ebute par le mot m , on pourra utiliser la fonction extraire.
(par exempledebut(”python”,”py”) vautT rue)
Exercice 4. Cr´eer puis tester une fonction fin des variables l et m permettant de tester si la chaˆıne de caract`eres l finit par le mot m .
(par exemplef in(”python”,”thon”) vautT rue)
Exercice 5. Cr´eer puis tester une fonction occurrences des variables l et m retournant le nombre d’occur- rences du mot m dans la chaˆıne de caract`eres l .
(par exempleoccurrences(”montypython”,”on”) vaut 2)
Exercice 6. Cr´eer puis tester une fonction atteindre des variables l et c retournant la liste des indices des occurrences du caract`ere c dans la chaˆıne de caract`eres l .
(par exempleatteindre(”montypython”,”y”) vaut [4,6])
Exercice 7. Cr´eer puis tester une fonction remplacer des variables l , c 1 et c 2 retournant la chaˆıne de caract`eres obtenue en rempla¸cant les occurrences du caract`ere c 1 par le caract`ere c 2 dans la chaˆıne de caract`eres l .
(par exempleremplacer(”montypython”,”y”,”i”) vaut ”montipithon”)
Exercice 8. Cr´eer puis tester une fonction statistiques de la variable l retournant la liste des caract`eres de la chaˆıne l ainsi que la liste de leurs nombres d’occurrences respectifs.
(par exemplestatistiques(”montypython”) vaut [′m′,′o′,′n′,′t′,′y′,′p′,′h′],[1,2,2,2,2,1,1])
www.emmanuelmorand.net 1/2 supTSI1617TpInfo09
TSI - Travaux Pratiques d’informatique 09.Recherche d’un mot dans une chaˆıne de caract`eres
R´ eponses
2)
def renverser(l):’’’retourne la cha^ıne de caract`eres obtenue en lisant les caract`eres de la cha^ıne l dans l’ordre d´ecroissant de leurs indices’’’
L=""
for k in range(0,len(l)):
L=L+l[len(l)-1-k]
return(L)
3)
def debut(l,m):’’’teste si la cha^ıne de caract`ere l d´ebute par le mot m’’’
if extraire(l,0,len(m)-1)==m:
return(True) else:
return(False)
4)
def fin(l,m):’’’teste si la cha^ıne de caract`ere l finit par le mot m’’’
if extraire(l,len(l)-len(m),len(l)-1)==m:
return(True) else:
return(False)
5)
def occurrences(l,m):’’’calcul du nombre d’occurrences du mot m dans la cha^ıne de caract`eres l’’’
s=0
for k in range(0,len(l)-len(m)+1):
if extraire(l,k,k+len(m)-1)==m:
s=s+1 return(s)
6)
def atteindre(l,c):’’’retourne la liste des indices des occurrences du caract`ere c dans la cha^ıne de caract`eres l’’’
L=[]
for k in range(0,len(l)):
if l[k]==c:
L.append(k) return(L)
7)
def remplacer(l,c1,c2):’’’retourne la cha^ıne de caract`eres obtenue en rempla¸cant les occurrences du caract`ere c1 par le caract`ere c2 dans la cha^ıne de caract`eres l’’’
L=""
for k in range(0,len(l)):
if l[k]==c1:
L=L+c2 else:
L=L+l[k]
return(L)
8)
def statistiques(l):’’’retourne la liste des caract`eres de la cha^ıne l ainsi que la liste de leurs nombres d’occurrences respectifs’’’
L=l #chaine en cours de traitement L1=[] #liste des caract`eres
L2=[] #liste des nombres d’occurrences while(len(L)>0):
c=L[0] #caract`ere en cours de traitement s=1
Ltemp=""
for k in range(1,len(L)):
if L[k]==c:
s=s+1 else:
Ltemp=Ltemp+L[k]
L1.append(c) L2.append(s) L=Ltemp return(L1,L2)
www.emmanuelmorand.net 2/2 supTSI1617TpInfo09