0% ont trouvé ce document utile (0 vote)
85 vues3 pages

Recherche séquentielle en Python

Exercice d'un travail pratique en informatique

Transféré par

ngouloudanielserdan
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
85 vues3 pages

Recherche séquentielle en Python

Exercice d'un travail pratique en informatique

Transféré par

ngouloudanielserdan
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Mathématiques supérieures le 7 Novembre 2024

o
Corrigé du TP n 1 - Recherches séquentielles

Dans tout ce qui suit, l’appellation ”tableau” pour une variable Python désignera indéferemment une
liste, un tuple ou une chaîne de caractères.

Recherche séquentielle d’un élément

Q1 : Le principe d’une recherche séquentielle d’un élément x donné dans un tableau est la suivante :

On parcourt les éléments du tableau un à un en testant à chaque fois l’égalité avec x et en


renvoyant ”Vrai” si c’est le cas. Si à la fin du parcourt, aucun cas d’égalité n’est avéré, on
renvoie ”Faux”.

En se basant sur le principe précédent, écrire une fonction recherche(x,L) qui renvoie True si l’objet
x se trouve dans le tableau L et False sinon.
Exemples de comportement attendu :

>>>recherche(1,[3,9,152,1,4])
True
>>>recherche(6,(3,3,7))
False
>>>recherche('a','blabla')
True

Q2 : a) Écrire une fonction recherche_indice(x,L) qui renvoie l’indice de la première occurrence de x


dans L si l’objet x se trouve dans le tableau L et None sinon.
”première occurrence” signifie celui qui a le plus petit indice

b) Écrire une fonction recherche_indice2(x,L) qui renvoie cette fois-ci l’indice de la dernière
occurence de x (et toujours None si x n’est pas dans L).
Exemples de comportement attendu :

>>>recherche_indice(1,[3,9,152,1,4])
3
>>>recherche_indice(3,(3,3,7))
0
>>>recherche_indice2(3,(3,3,7))
1
>>>recherche_indice('z','blabla')

Q3 : Écrire une fonction recherche_indices(x,L) qui renvoie la liste des indices de toutes les occurrences
de x dans L si l’objet x se trouve dans le tableau L et la liste vide [] sinon.
Exemples de comportement attendu :

1
>>>recherche_indices(1,[3,1,152,1,4,1])
[1,3,5]
>>>recherche_indice(9,(3,3,7))
[]

Q4 : Pour cette dernière question d’application, on importera le module random et on créera la liste
suivante :

1 from random import *


2
3 M=[chr(i) for i in range(97,123)]+[' ']

a) Que contient la liste M ?

b) Écrire une fonction frazoazar(n) qui renvoie une chaîne de caractères de longueurs n dont les
lettres sont tirées aléatoirement et uniformément dans la liste M.
c) En se servant fonction recherche_indices, compter le nombre de 'a' et le nombre de 'z' dans
une évaluation de frazoazar(1000). Que remarque-t-on ? Expliquer pourquoi.
d) Écrire une fonction Ayestu(n,nb) qui, en utilisant la fonction recherche, recherche le caractère
'a' dans nb tirages de phrases aléatoires de longueur n et renvoie la proportion des phrases
contenant 'a' parmi toutes les phrases crées.
e) À partir de combien de lettres dans les phrases aléatoires la proportion précédente semble-elle
supérieure à 95% ?
Retrouver ce résultat mathématiquement.

Correction.

Q1 :

1 def recherche(x,L):
2 for i in range(len(L)):
3 if L[i] == x:
4 return True
5 return False
6
7 # ou avec la syntaxe Python du parcourt des valeurs d'une liste :
8
9 def recherche(x,L):
10 for e in L:
11 if e == x:
12 return True
13 return False

Q2 : a)

2
1 def recherche_indice(x,L):
2 for i in range(len(L)):
3 if L[i] == x:
4 return i
5 return False

b)

1 def recherche_indice2(x,L):
2 n = len(L)
3 for i in range(1,n+1):
4 if L[n-i] == x: # ou aussi L[-i] en syntaxe Python
5 return n-i
6 return False

Q3 :

1 def recherche_indices(x,L):
2 Ind = []
3 for i in range(len(L)):
4 if L[i] == x:
5 [Link](i)
6 return Ind

Q4 : a)

>>> M
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n'
, 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', ' '
]

b)

1 def frazoar(n):
2 chaine = ''
3 for k in range(n):
4 chaine += M[randint(0,len(L)-1)]
5 return chaine

Vous aimerez peut-être aussi