Petit test :
- conversions shadoks ou plutôt base 4 <–> décimal
- compréhension d’un code python …
- … et rédaction d’une fonction python …
- … pour tester votre implication dans le projet pendu.
TP python :
A) Correction du code « statistiques sur un texte »
def lettres_differentes(mot): """ attend une chaîne de caractères : mot renvoie une liste : les caractères différents de mot """ liste=[] for l in mot : if l not in liste: liste.append(l) return liste def combien_de(l, mot): """ attend un caractère : l une chaîne de caractères : mot renvoie un entier : le nombre de fois où apparaît l dans mot """ effectif = 0 for lettre in mot : if lettre == l : # ici c'est la lettre l effectif += 1 # là c'est le nombre 1 return effectif def stats(mot): """ une fonction qui prend en entrée une chaîne de caractères et affiche un tableau avec tous ses caractères et les effectifs liés. """ # création liste des lettres lettres_diff = lettres_differentes(mot) # débuggage print("Débuggage 1 : lettres différentes\n", lettres_diff) # décompte des effectifs de chaque lettre effectifs=[] for l in lettres_diff: nbre = combien_de(l, mot) effectifs.append(nbre) # débuggage print("Débuggage 2 : différents effectifs\n", effectifs) # affichage print() print("Statistiques pour\n", mot) print() for i in range(len(lettres_diff)) : print(lettres_diff[i], ":", effectifs[i]) texte = "Lorem ipsum dolor sit amet, consectetur adipiscing elit." stats(texte)
Débuggage 1 : lettres différentes ['L', 'o', 'r', 'e', 'm', ' ', 'i', 'p', 's', 'u', 'd', 'l', 't', 'a', ',', 'c', 'n', 'g', '.'] Débuggage 2 : différents effectifs [1, 4, 3, 5, 3, 7, 6, 2, 4, 2, 2, 2, 5, 2, 1, 3, 2, 1, 1] Statistiques pour Lorem ipsum dolor sit amet, consectetur adipiscing elit. L : 1 o : 4 r : 3 e : 5 m : 3 : 7 i : 6 p : 2 s : 4 u : 2 d : 2 l : 2 t : 5 a : 2 , : 1 c : 3 n : 2 g : 1 . : 1 >>>
B) Parcourir une liste
Écrire une fonction est_present(elt, liste)
qui attend en paramètre une valeur et une liste et qui teste si la valeur est présente dans la liste
- d’abord en renvoyant
True
ouFalse
. Exemples :>>> liste_de_test = [42, 13, 28, 14, 2, 52] >>> est_present(14, liste_de_test) >>> True >>> est_present(23, liste_de_test) >>> False
- Puis en renvoyant l’indice où est la valeur est trouvée, ou
-1
si elle n’est pas trouvée. Exemples :>>> liste_de_test = [42, 13, 28, 14, 2, 52] >>> est_present(14, liste_de_test) >>> 3 >>> est_present(23, liste_de_test) >>> -1
Écrire une fonction maximum(liste)
qui attend en paramètre une liste non vide et qui
- renvoie son maximum. Exemples :
>>> liste_de_test = [42, 13, 28, 14, 2, 52, 21, 35] >>> maximum(liste_de_test) >>> 52
- Puis renvoie un couple
(maximum, indice)
. Exemples :>>> liste_de_test = [42, 13, 28, 14, 2, 52, 21, 35] >>> maximum(liste_de_test) >>> (52, 5)
Idem avec le minimum
.
Recherche de doublons
Démo de résultat :
[42, 13, 28, 84, 2, 52] Le maximum est 84 atteint à l'indice 3 Le minimum est 2 atteint à l'indice 4 Pas de doublons dans cette liste [5, 6, 7, 42, 13, 28, 12, 84, 2, 6, 42, 52, 6, 52] Le maximum est 84 atteint à l'indice 7 Le minimum est 2 atteint à l'indice 8 Il y a 3 fois le nombre 6 Il y a 2 fois le nombre 42 Il y a 2 fois le nombre 52 >>>
Pour ceux qui n’y arrivent pas, nous pouvons chercher l’entier le plus grand d’une liste en faisant max(liste) et à l’inverse min(liste) (ne pas oublier le return)
D’où l’intérêt de la question suivante 😉