TP - Dictionnaires⚓︎
Exercice 1 : Utilisation de dictionnaires
-
Écrire une fonction
saisie_eleve()
permettant de saisir des informations concernant un élève : login, nom, prénom, date de naissance, moyenne obtenue en NSI et qui renvoie un dictionnaire contenant ces informations.Exemples :
- la valeur « rchraka » sera associée à la clé « login » ;
- la valeur « Chraka » sera associée à la clé « nom ».
Conseil : on pourra s'inspirer de l'exemple « Carte de visite » vu en cours.
-
Ecrire une fonction
saisie_eleves(nombre_eleves)
permettre la saisie du nombre d'élèvesnombre_eleves
et les mémoriser dans une liste. Ce sera donc une liste de dictionnaires ! -
Ecrire une fonction
affiche_eleves(liste_eleves)
affichant la liste des élèvesliste_eleves
présentée de la manière suivante :
pdupont : Dupont Pierre 15/01/2005 - Note :14
lduponte : Dupontel Léonie 11/11/2006 - Note :17.5
Exercice 2 : Un dictionnaire pour compter les mots
-
Déclarer le dictionnaire suivant dans un programme :
un_dico={'toto':3, 'titi':1, 'tutu':42}
-
Sans modifier la ligne précédente, écrire les lignes de code qui modifient ce dictionnaire de telle sorte qu'il contienne également une clé
'tata'
associée à la valeur 8. -
Écrire les lignes de code qui modifient ce dictionnaire de telle sorte que la valeur associée à la clé
'titi'
soit augmentée de 1. -
Écrire une fonction
maj_dico_compte(dico, mot)
qui prend en paramètre:- un dictionnaire (dico) dont les clés sont des mots et les valeurs sont des entiers,
- et un mot.
La fonction devra incrémenter de 1 la valeur associée au mot dans le dictionnaire s'il est déjà présent. Sinon, elle ajoutera le mot au dictionnaire avec la valeur 1.
Exemple:
>>> print(un_dico) {'tata': 8, 'tutu': 42, 'titi': 2, 'toto': 3} >>> maj_dico_compte(un_dico,'titi') >>> print(un_dico) {'tata': 8, 'tutu': 42, 'titi': 3, 'toto': 3} >>> maj_dico_compte(un_dico,'tati') >>> print(un_dico) {'tata': 8, 'tutu': 42, 'tati': 1, 'titi': 3, 'toto': 3}
-
Écrire une fonction
supprime_ponctuation
qui prend une chaîne de caractères en paramètre et renvoie une chaîne identique dans laquelle les symboles de ponctuation ont été remplacés par des espaces.Indication: la chaîne
punctuation
du module string contient tous les symboles de ponctuation à effacer. -
Écrire une fonction
compte_mots
qui prend une chaîne de caractères en paramètre et renvoie un dictionnaire contenant le nombre d'occurrences de chaque mot de la chaîne. Attention à ne pas inclure la ponctuation dans les mots !Indication: Vous pouvez utiliser la méthode split pour "couper" les phrases en liste de mots.
-
Écrire une fonction
compte_mots_total
qui prend en parametre un dictionnaire d'occurrences de mots et renvoie le nombre total d'occurrences de tous les mots du dictionnaire.Exemple:
>>> un_dico={'tata': 8, 'tutu': 42, 'tati': 1, 'titi': 3, 'toto': 3} >>> print(compte_mots_total(un_dico)) 57
-
Utiliser les fonctions précédentes pour afficher le nombre total de mots contenu dans un fichier texte ainsi que le nombre d'occurrences de chaque mot. Le nom de fichier sera saisi par l'utilisateur. Utiliser le fichier
recette.txt
pour tester le programme.Indication : Pour ouvrir un fichier dans python et lire les lignes de ce fichier, la syntaxe est la suivante:
f = open("fichier.txt", 'r') # fichier.txt est le fichier que l'on doit ouvrir, il est au même endroit que le fichier python exécuté. 'r' signifie que l'on va seulement lire le fichier et non écrire dedans('w') for ligne in f.readlines(): # boucle sur les lignes du fichier ... # traiter les lignes "ligne" une par une f.close() # toujours fermer le fichier à la fin pour éviter de "corrompre" les fichiers
-
Même question que précédemment mais en passant le nom de fichier à analyse comme un argument de la ligne de commande.
Exemple de commande pour lancer le programme sous le terminal avec
recette.txt
en argument :$ python3 monProgramme.py recette.txt
Indication : Les arguments sont accessibles depuis un programme Python dans la liste
sys.argv
. On peut y accéder par exemple de la manière suivante :from sys import argv print(argv) # par exemple
-
Écrire une fonction
affiche_mots
qui prend un nom de fichier en paramètre et affiche:- le nombre de mots au total,
- le nombre de mots différents,
- et le nombre d'occurrences de chaque mot dans le fichier.
Exemple sur le fichier
sense_short.txt
(attention, il se peut que les mots ne s'affichent pas exactement dans le même ordre) :nombre de mots: 3591 - nombre de mots différents: 949 strive : 1 expectation : 1 comfortably : 2 brother : 3 trouble : 2 sensibility : 1 ...
-
Écrire une fonction
affiche_mots_importants
qui prend un nom de fichier en paramètre et affiche les mots dont le nombre d'occurences représentent entre 0.02% et 0.2% du nombre total de mots du fichier.Exemple sur le fichier
sense_and_sensibility.txt
(attention, il se peut que les mots ne s'affichent pas exactement dans le même ordre) :truth : 26 child : 40 together : 73 within : 62 future : 31 kind : 95 myself : 103 nature : 32 ...
Exercice 3 : Création d'index
Créer un script Python index.py
recevant en paramètre le nom d'un fichier texte et écrivant la liste des mots du texte, et pour chaque mot la liste des numéros de lignes où ce mot apparaît dans le texte. On ne tiendra pas compte des majuscules.
Par exemple :
$ python3 index.py couplet1.txt
il [0, 1]
ja [2, 2, 3, 3]
jamais [2, 3]
n'avait [2, 3]
navigué [2, 3]
navire [0, 1]
ohé [4, 4]
petit [0, 1]
qui [2, 3]
un [0, 1]
était [0, 1]
Source de couplet1.txt