TP - Utiliser des dictionnaires☘
Dans ce TP, les différentes parties sont globalement indépendantes.
Dans le dossier [NSI]
, créez le répertoire [B04_Dictionnaires]
.
Consignes communes à chaque partie
Le programme principal contient un appel au module doctest
:
##----- Programme principal et tests -----##
if __name__ == '__main__':
import doctest
doctest.testmod()
main
», il faudra penser à élaborer un plan de test
(avec des affichages console).Pensez à demander au professeur de valider ce plan de test...
TPB04.11 : Scrabble☘
Téléchargez le fichier à compléter TPB04.11.py
(clic droit -> [Enregistrer la cible du lien sous]) et enregistrez-le dans
le répertoire [B04_Dictionnaires]
.
On dispose du dictionnaire suivant, dans lequel chaque lettre de l'alphabet (en majuscules) est associé au nombre de points qui lui est attribué au scrabble :
1 2 3 4 |
|
-
Complétez la définition de la fonction
valeur_mot()
qui prend en paramètre une chaîne de caractères constituée de lettres majuscules et qui renvoie le nombre de points que rapporterait ce mot au scrabble.1 2 3 4 5 6 7 8 9 10
def valeur_mot(chaine): """ chaine – str, une chaîne de caractères constituées de lettres majuscules Sortie: int – nombre de points de ce mot au scrabble >>> valeur_mot("PYTHON") 20 >>> valeur_mot("JAVASCRIPT") 24 """ pass
-
Complétez la définition de la fonction
meilleure_lettre()
qui prend en paramètre un tableau dont les éléments sont des lettres majuscules et qui renvoie celle ayant la plus forte valeur au scrabble.
En cas d'égalité, c'est la lettre ayant l'indice le plus élevé dans le tableau qui est renvoyée.1 2 3 4 5 6 7 8 9 10 11
def meilleure_lettre(tab): """ tab – list, tableau NON VIDE de caractères Sortie: str – caractère de tab ayant la plus forte valeur au scrabble En cas d'égalité, caractère ayant l'indice le plus grand dans tab >>> meilleure_lettre(['B', 'A', 'K', 'D']) 'K' >>> meilleure_lettre(['A', 'E', 'I']) 'I' """ pass
TPB04.12 : Décompter des occurrences☘
Téléchargez le fichier à compléter TPB04.12.py
(clic droit -> [Enregistrer la cible du lien sous]) et enregistrez-le dans
le répertoire [B04_Dictionnaires]
.
-
Complétez la définition de la fonction
occurrences()
en respectant ses spécifications.1 2 3 4 5 6 7 8 9 10 11 12
def occurrences(sequence): """ sequence – Une séquence ordonnée (tuple, list ou str) Sortie: dict – dictionnaire tel que : - les clefs sont les valeurs de la séquence - les valeurs sont les occurrences de ces clefs dans la séquence >>> occurrences([4, 2, 3, 4, 1, 4, 3, 4]) {4: 4, 2: 1, 3: 2, 1: 1} >>> occurrences("abracadrabra") {'a': 5, 'b': 2, 'r': 3, 'c': 1, 'd': 1} """ pass
-
Complétez la définition de la fonction
compte_mots()
en respectant ses spécifications.1 2 3 4 5 6 7 8 9 10
def compte_mots(chaine): """ chaine – str, une chaîne de caractère comportant des espaces Sortie: dict – dictionnaire tel que : - les clés sont les mots de la chaine - les valeurs sont les occurrences des mots >>> compte_mots("a b a c ab") {'a': 2, 'b': 1, 'c': 1, 'ab': 1} """ pass
Une piste
Vous pouvez utiliser la méthode
.split()
.
Pour comprendre son rôle, testez les instructions suivantes dans la console :>>> tab = "a b a c ab".split() >>> tab
-
Téléchargez le texte du « Petit Chaperon Rouge » puis enregistrez-le dans le répertoire
[B04_Dictionnaires]
.
Dans le programme principal, importez ce texte puis écrivez les instructions nécessaires pour afficher, dans la console, chaque mot de ce texte suivi de son nombre d'occurrences dans le texte.Une piste
Si
f
est le nom d'une variable faisant référence à un fichier texte, alorsf.read()
renvoie le contenu de ce fichier texte sous la forme d'une unique chaîne de caractères.Affichage à obtenir (10 premières lignes)
Il : 9 etait : 9 une : 8 fois : 4 adorable : 1 petite : 1 fille : 1 que : 22 tout : 11 le : 51
-
Complétez la définition de la fonction
compte_tous_mots()
en respectant ses spécifications.
Appliquez ensuite, dans le programme principal, cette fonction au texte du « Petit Chaperon Rouge ».1 2 3 4 5 6 7 8 9 10
def compte_tous_mots(chaine): """ chaine – str, une chaîne de caractère comportant des espaces Sortie: dict – dictionnaire tel que : - les clés sont des entiers (longueurs possibles pour un mot) - les valeurs sont les occurrences des mots ayant cette longueur >>> compte_tous_mots("a b a c ab") {1: 4, 2: 1} """ pass
Affichage à obtenir
{2: 454, 5: 241, 3: 189, 4: 295, 8: 78, 6: 120, 1: 98, 7: 109, 9: 22, 10: 9, 12: 1, 13: 1, 11: 1}
Une piste
Vous pouvez (à nouveau) utiliser la méthode
.split()
.
Pour comprendre son rôle, testez les instructions suivantes dans la console :>>> tab = "a b a c ab".split() >>> tab
-
Complétez la définition de la fonction
tab_plus_frequent()
qui prend en paramètre un dictionnaire dont les clefs sont des chaînes de caractères et un entier strictement positiflongueur
. Cette fonction renvoie un tableau constitués des chaînes de caractères de taille lalongueur
spécifiée et associées à la plus grande valeur dans le dictionnaire.
Appliquez ensuite, dans le programme principal, cette fonction au dictionnaire obtenu à la question 3. à partir du texte du « Petit Chaperon Rouge » afin d'afficher, pour chaque longueur possible de mot, le (ou les) plus présents dans le texte.1 2 3 4 5 6 7 8 9
def tab_plus_frequent(dico, longueur): """ dico – dictionnaire de chaines avec leur occurence Sortie : list – tableau de chaines de taille longueur ayant l'occurence la plus grande. >>> tab_plus_frequent({'a': 3, 'b': 2, 'c': 3, 'ab': 5}, 1) ['a', 'c'] """ pass
Affichage à obtenir
1 carac : ['a'] avec 32 occurences 2 carac : ['et'] avec 61 occurences 3 carac : ['que'] avec 22 occurences 4 carac : ['mere'] avec 31 occurences 5 carac : ['grand'] avec 29 occurences 6 carac : ['encore'] avec 6 occurences 7 carac : ['galette'] avec 5 occurences 8 carac : ['Chaperon'] avec 24 occurences 9 carac : ['bouteille', 'engloutir'] avec 2 occurences 10 carac : ['rencontrer', 'noisetiers', 'brillaient', 'satisfaite', 'approchant', 'fourrerent', 'retrouvant', 'cadenasser', 'intentions'] avec 1 occurences 11 carac : ['Allegrement'] avec 1 occurences 12 carac : ['reconnaitras'] avec 1 occurences 13 carac : ['renseignement'] avec 1 occurences
Une piste
C'est un algorithme de recherche du maximum légèrement modifié.
Lorsqu'on rencontre un nouveau maximum, on ré-initialise le tableau ;
lorsqu'on rencontre un mot de même « valeur », on l'incorpore au tableau.